[英]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.