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()进行返回?

阅读 3.4k
1 个回答

问题1 : console.log(ninja1.feints) 。 ninja1对象没有feints属性,所以打印undefind;
问题2 : fients变量的作用域是Ninja整个对象内,对象内都可以访问到,至于函数返回,只是返回的数据.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏