js 使用闭包模拟私有变量
function Ninja(){
var feints = 0;
this.getFeints = function(){
return feints;
};
this.feint = function() {
feints++;
};
}
var ninja1 = new Ninja();
ninja1.feint();
console.log(ninja1.feints);
console.log(ninja1.getFeints());
//undefined
//1
我想问一下这里的闭包是怎么实现可以通过ninja1.getFeints()来获取累加之后的feints的值却无法直接通过ninja1.feints来获取值?
是不是可以这样理解:ninja1.feints因为feints在构造函数的内部,所以无法访问,但通过调用ninja1.feint()这个方法,feints存在于闭包内,所以可以通过getFeints()进行返回?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题1 : console.log(ninja1.feints) 。 ninja1对象没有feints属性,所以打印undefind;
问题2 : fients变量的作用域是Ninja整个对象内,对象内都可以访问到,至于函数返回,只是返回的数据.