1. 程式人生 > >雜記——簡單理解上下文和this

雜記——簡單理解上下文和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);