node的this和瀏覽器的this指向的區別

2021-10-10 00:27:01 字數 1668 閱讀 4912

在node中,this指向和瀏覽器稍有不同。下邊是我總結的一些內容:

js中宣告乙個沒有var的變數,它會被作為全域性物件的屬性。

在瀏覽器中全域性物件是window,所以使用window才能訪問到:

//在瀏覽器環境執行

name = 'win'

console.log(window.name); //輸出win

在node中全域性物件是global,所以自然就是它的屬性咯~ 

//在node環境執行

name = 'node.js'

console.log(global.name); //輸出node.js

普通函式的this總是指向呼叫該函式的物件。

最外層的物件就是windows。我們在最外層呼叫test()函式,所以test()的this也是win,故輸出「win」。

//在瀏覽器執行

window.name = 'win'

function test()

test();

並且最外層的this就是windows 

//在瀏覽器執行

console.log(this === window); //輸出「ture」

所以我們可以寫這樣乙個**:

//在瀏覽器執行

this.name = 'win' //這種寫法與windows.name=win等價

console.log(this === window); //輸出「ture」

function test()

test();

好了,以上就是在瀏覽器中函式指向this簡談。

看懂上邊裡的例子,我們會認為node只是把全域性的的名字window換成了global。

並且看起來也是這樣:

//在node環境執行

global.name = 'node.js'

function test()

test();

可是,這不代表node中僅僅是把全域性物件改名為global這麼簡單!

看下邊這個例子:

//在node中執行

this.name = 'win'

console.log(this === global); //輸出"false」

function test()

test();

也就是說,在最外層this不等於global,但是test函式的this依舊指向global。

這是因為在最外層的this並不是全域性物件global。而是module.exports

console.log(module.exports === this); //輸出「true」
總結:node中最外層this不等於全域性作用域global。而且在最外層呼叫函式,將會使得函式指向global。

node專案開啟瀏覽器

可用於node專案編譯完成後自動開啟瀏覽器。總結了兩種,直接上 或命令 npm i g chrome chrome 開啟chrome瀏覽器 chrome index.html chrome瀏覽器中開啟index.html頁面const childprocess require child proce...

IE瀏覽器和谷歌瀏覽器的互跳

var obj new activexobject wscript.shell 符號要轉義 主要是利用了ie瀏覽器的activexobject物件實現。注意事項 1.跳轉如果攜帶引數,需要將查詢字串中 連線符改為 2.需要設定ie瀏覽器的安全設定,將activex控制項標記為可安全執行指令碼,操作步...

瀏覽器中使用模板引擎 node

art template art template 不僅可以在瀏覽器使用,也可以在 node 中使用 安裝 npm install art template node modules 不要改,也不支援改。在 node 中使用 art template 模板引擎 模板引起最早就是誕生於伺服器領域,後來...