各位前輩先進大家好:
我看到了一個js例子如下:
function callName() {
console.log(this.name);
}
var name = '全域阿婆';
var auntie = {
name: '漂亮阿姨',
callName: callName
}
callName() // '全域阿婆'
auntie.callName()
用node執行後結果是:
undefined
漂亮阿姨
可是我把程式copy到chrome中的F12 console視窗中,結果卻是:
全域阿婆
漂亮阿姨
想請問為什麼會這樣? 謝謝.
Hi,因為在沒有物件的情況下呼叫 function,this 的值在瀏覽器下會是window,在 node.js 時會是 global
在瀏覽器的情況下會將變數指定在 window 下,所以可以運作
如果要在 node 執行,應該要寫 global.name
function callName() {
console.log(this.name);
}
global.name = '全域阿婆';
var auntie = {
name: '漂亮阿姨',
callName: callName
};
callName(); // '全域阿婆'
auntie.callName();
可以參考: https://blog.techbridge.cc/2019/02/23/javascript-this/