雜記——簡單理解上下文和this

直接上代碼

var User = {
    count: 1,
    getCount: function() {    
        return this.count;
    }
};
console.log(User.getCount());
var func = User.getCount;
console.log(func());

輸出 1 和 undefined

爲什麼呢?

因爲func是在window的上下文中被執行的,所以會訪問不到count屬性。

那怎麼樣才能訪問到count屬性呢?

可以使用Function.prototype.bind();Function.prototype.apply();Function.prototype.call();

var func = User.getCount.bind(User);
console.log(func());
var func = User.getCount.apply(User);
console.log(func);
var func = User.getCount.call(User);
console.log(func);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章