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