Tho*_*mas 13 javascript module-pattern
实现模块模式时,私有函数如何访问模块的私有属性?我还没有看到任何开发人员这样做的例子.有什么理由不去吗?
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();
}
};
})();
Run Code Online (Sandbox Code Playgroud)
Que*_*tin 12
实现模块模式时,私有函数如何访问模块的私有属性?
属性在范围内,所以他们"只是做"
不行.
是的,它确实.
_privateIncrement无法访问模块的范围.
是的,它确实.
查看以下实时示例:
var module = (function(){
// private property
var number = 0;
// global method
_privateIncrement = function(){
number++;
};
// public api
return {
// OK
getNumber: function(){
return number;
},
// OK
incrNumber: function(){
number++;
},
// Does work!
privateIncrNumber: function(){
_privateIncrement();
}
};
})();
// Show default value
document.body.innerHTML += (module.getNumber());
// Increment
module.privateIncrNumber();
// Show new value
document.body.innerHTML += (module.getNumber());
// Increment (since _privateIncrement was defined as a global!)
_privateIncrement();
// Show new value
document.body.innerHTML += (module.getNumber());
// Output: 012
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13852 次 |
| 最近记录: |