Khi triển khai mẫu mô-đun, các hàm riêng tư truy cập các thuộc tính riêng của mô-đun như thế nào? Tôi đã không nhìn thấy bất kỳ ví dụ mà các nhà phát triển làm điều này. Có lý do gì để không?Mẫu mô-đun JavaScript: Cách thức các phương thức riêng truy cập phạm vi của mô-đun?
var module = (function(){
// private property
var number = 0;
// private method
_privateIncrement = function(){
// how do I access private properties here?
number++;
};
// public api
return {
// OK
getNumber: function(){
return number;
},
// OK
incrNumber: function(){
number++;
},
// Doesn't work. _privateIncrement doesn't have
// access to the module's scope.
privateIncrNumber: function(){
_privateIncrement();
}
};
})();
Hoạt động tốt: http://jsfiddle.net/DREKt/ Mặc dù bạn có thể muốn đặt trước '_privateIncrement' bằng khai báo' var'. – Dennis
nếu 'số' không bị ràng buộc trong phần đóng của mô-đun, và là một phần của đối tượng, thì bạn có thể cần sử dụng' apply() 'hoặc' call() 'để gọi phương thức riêng trong ngữ cảnh chính xác. '_privateIncrement.call (this)' –