簡體   English   中英

客戶端和服務器端javascript中“ this”的值之間的差異

[英]Difference between value of 'this' in client-side vs server-side javascript

編寫一些nodejs測試程序,並遇到了一些意外的怪癖。 在瀏覽器中當我說console.log(this); 它不在函數中,而是window.object。 我知道nodejs有一個全局對象,但是當我執行console.log(this)時,我只是得到一個空對象。 然后,當我在創建的函數中要求“ this”的值時,我得到的是undefined 我希望獲得對當前函數的引用(在本例中為myClass),這是怎么回事?

請參閱我的以下nodejs程序:

'use strict';
var log = console.log; 

log(this); //empty object

function myClass() {    
    log (this); //undefined 
    this.variable = 3; //exception, cannot set property 'test' of undefined
}

myClass();

謝謝

實際上, node.js在這里的行為正確,因為您沒有構造一個類,只是在沒有任何this上下文的情況下調用它的構造函數。 要創建類的新實例,應始終使用new運算符:

new myClass();

在行為上的差異是造成嚴格模式 ,因為在嚴格模式下,由於安全方面的原因, this 是不引用默認的全局對象

該行為是由以下原因引起的:

'use strict';

如果在客戶端使用該代碼,您將具有相同的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM