2009-11-14 30 views

回答

3

context(在this關鍵字),這不是一個完全隱含,它可以設置和改變明確

例如:

function test() { 
    alert(this); 
} 

test.call("Hello world"); 

test函數被調用的字符串作爲上下文。

所以總而言之,除非你明確定義它,否則你不知道什麼是this,或者你在函數內部。

+0

啊哈,無賴。 (這裏) – prismofeverything 2009-11-14 19:38:03

2

相同的功能將看到不同的值this取決於它如何調用。有關詳細信息,請參見Crockford,但有四種情況:

  1. 作爲一個簡單函數調用,它被綁定到全局/窗口對象。
  2. 作爲對象調用方法,它引用該對象。
  3. 通過new關鍵字作爲構造函數調用,它是新實例化的對象,它繼承自存儲在函數自己的prototype屬性中的對象。
  4. 由自己調用applycall方法,它是提供的第一個參數。

如果這些情況聽起來複雜,繁瑣,而且容易出錯,更有理由避免依賴this以外的方法,它是很有道理的反正。

相關問題