# Closure
Note ngắn, vài ví dụ dùng closure làm những thứ hay ho, rất j và này nọ
# Làm biến private
ES6 ra đời class
nhưng vẫn chưa thể thay thế được style ngày xưa
function Person() {
var name = 'khanh';
this.getName = () => name; // `name` có thể xài tại đây là nhờ Closure
}
const p = new Person;
p.getName();
# Tạo default args for function
function bindArgs(fn, ...defArgs) {
return (...args) => {
// `defArgs` có thể xài tại đây là nhờ Closure
return fn(...defArgs, ...args)
}
}
// sử dụng
function sum(a, b) {
return a + b;
}
// bind 1 arg
const sum5 = bindArgs(sum, 5);
sum5(2) // 7
// bind 2 args
const sum10 = bindArgs(sum, 5, 5);
sum10() // 10
Chý ý: Nếu muốn sử dụng phức tạp hơn, thì Lodash viết phức tạp và cầu kỳ, tính năng này nọ hơn nhiều LINK 16' (opens new window)