鍍金池/ 問答/網(wǎng)絡安全  HTML/ js 使用閉包模擬私有變量

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
我想問一下這里的閉包是怎么實現(xiàn)可以通過ninja1.getFeints()來獲取累加之后的feints的值卻無法直接通過ninja1.feints來獲取值?

是不是可以這樣理解:ninja1.feints因為feints在構(gòu)造函數(shù)的內(nèi)部,所以無法訪問,但通過調(diào)用ninja1.feint()這個方法,feints存在于閉包內(nèi),所以可以通過getFeints()進行返回?

回答
編輯回答
舊螢火

問題1 : console.log(ninja1.feints) 。 ninja1對象沒有feints屬性,所以打印undefind;
問題2 : fients變量的作用域是Ninja整個對象內(nèi),對象內(nèi)都可以訪問到,至于函數(shù)返回,只是返回的數(shù)據(jù).

2018年7月8日 06:49