01/10/2018, 00:49

Closure trong javascript

mình đang đọc cuốn The good parts đến đoạn Closure thì hơi mắc

Earlier, we made a myObject that had a value and an increment method. Suppose we
wanted to protect the value from unauthorized changes.
Instead of initializing myObject with an object literal, we will initialize myObject by
calling a function that returns an object literal. That function defines a value vari-
able. That variable is always available to the increment and getValue methods, but
the function’s scope keeps it hidden from the rest of the program:`

var myObject = function () {
var value = 0;
return {
increment: function (inc) {
value += typeof inc === 'number' ? inc : 1;
},
getValue: function () {
return value;
}
};
}();

We are not assigning a function to myObject . We are assigning the result of invoking
that function. Notice the () on the last line. The function returns an object contain-
ing two methods, and those methods continue to enjoy the privilege of access to the
value variable.`
Bác nào giải thích cho em về đoạn code bên trên cái, càng chi tiết càng tốt nha, thanks

Nguyễn Hoàng viết 02:54 ngày 01/10/2018

closure này đúng là phần hơi khó trong javascript, nhưng bạn có thể bỏ qua nó nếu dùng es6, link tham khảo https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

Thái Trường viết 02:49 ngày 01/10/2018

Tại sao lại bỏ qua được hả bác, nhân tiện e hỏi luôn nếu học es6 thì những cái thành phần cũ gì của es5 có thể bỏ qua dc, thank

Nguyễn Hoàng viết 02:56 ngày 01/10/2018

es 6 chỉ là thêm các tính năng mới như class, import , export, extends, let, arrow function… chứ vẫn ơhari học những cái cơ bản chỉ, bỏ qua dc vì dùng es6 có thể đơn giản hơn rất nhiều mà vẫn tạo ra dc cái như closure

Thái Trường viết 03:00 ngày 01/10/2018

Cám ơn bác nhiều nhé !. Mình mời bắt đầu tự học nên còn phải học theo dài dài

Nguyễn Hoàng viết 03:05 ngày 01/10/2018

cố lên bạn, chỉ cần có đam mê là ok hết

Bài liên quan
0