iT邦幫忙

0

node執行問題...

各位前輩先進大家好:
我看到了一個js例子如下:

function callName() {
  console.log(this.name);
}

var name = '全域阿婆';
var auntie = {
  name: '漂亮阿姨',
  callName: callName  
}

callName()        // '全域阿婆'
auntie.callName()

用node執行後結果是:
undefined
漂亮阿姨

可是我把程式copy到chrome中的F12 console視窗中,結果卻是:
全域阿婆
漂亮阿姨

想請問為什麼會這樣? 謝謝.

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

5
DDH
iT邦新手 5 級 ‧ 2021-03-24 16:36:43
最佳解答

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/

了解,謝謝前輩指導.

我要發表回答

立即登入回答