看到大神在介紹this的時候第二個使用環境,原文在此:
http://www.ruanyifeng.com/blo...
這裡的物件o應該就是this?如果是的話為什麼這樣最不全等?
function test(){
console.log(this.x);
}
var o = {};
o.x = 1;
o.m = test;
console.log(o.m());
console.log(o===this);
輸出的分別是:
1
false
仅有的幸福2017-06-14 10:56:15
要記住,另外一種呼叫方式func.call(context, x, m) 上面的兩種方式只是語法糖 可以透過「轉換程式碼」的方式如:
function test(){
console.log(this.x);
}
等價於
function test(){
console.log(this.x);
}
test.call(undefined)
按理說印出來的 this 應該就是 undefined 了吧
但是瀏覽器裡有一條規則:
如果你傳的 context 就 null 或 undefined,那麼 window 物件就是預設的 context(嚴格模式下預設 context 是 undefined)
因此上面的this對應的應該是 window。