有人知道嗎?找不到這個問題,即使它看起來很基本。在JavaScript中,我怎麼能告訴函數綁定到什麼對象(即它的'this')而不調用它?
1
A
回答
3
的context
(在this
關鍵字),這不是一個完全隱含,它可以設置和改變明確。
例如:
function test() {
alert(this);
}
test.call("Hello world");
的test
函數被調用的字符串作爲上下文。
所以總而言之,除非你明確定義它,否則你不知道什麼是this
,或者你在函數內部。
2
相同的功能將看到不同的值this
取決於它如何調用。有關詳細信息,請參見Crockford,但有四種情況:
- 作爲一個簡單函數調用,它被綁定到全局/窗口對象。
- 作爲對象調用方法,它引用該對象。
- 通過
new
關鍵字作爲構造函數調用,它是新實例化的對象,它繼承自存儲在函數自己的prototype
屬性中的對象。 - 由自己調用
apply
或call
方法,它是提供的第一個參數。
如果這些情況聽起來複雜,繁瑣,而且容易出錯,更有理由避免依賴this
以外的方法,它是很有道理的反正。
相關問題
- 1. 它爲什麼一直告訴我它找不到符號?
- 2. 我怎樣才能調用JavaScript函數,並傳遞到它行的對象?
- 3. JavaVM.framework。它是什麼?我怎麼用它?
- 4. 爲什麼我不能在定義對象時在(JavaScript)Worker中使用它?
- 5. JavaScript - 定義函數而不調用它?
- 6. 當我告訴它時,爲什麼我的Three.js對象不會移動?
- 7. 誰能告訴我它怎麼能得到寄存器的值DS
- 8. - 爲什麼?我怎麼能阻止它?
- 9. 我怎麼能告訴你使用Dropzone.js
- 10. javascript對象:它有什麼不對?
- 11. 什麼是「終止對象」,爲什麼我不能調用它的方法?
- 12. 爲什麼函數未定義,即使它使用console.dir在對象中列出?
- 13. Neo4j慢?我一定在做錯什麼,請告訴我它是什麼
- 14. 爲什麼當我嘗試將一個函數綁定到它本身時,「this」對象仍然指向窗口?
- 15. 自定義功能,它告訴我,我的函數不是一個函數
- 16. jQuery告訴我什麼是數組時,它不是
- 17. pybrain什麼是總誤差,它告訴我們什麼
- 18. 爲什麼我們不能在const對象上調用函數?
- 19. 爲什麼字典會自動打印而不告訴它?
- 20. 爲什麼不能'基類對象'調用它自己的虛函數? C++
- 21. 爲什麼需要「this」來調用對象中的函數
- 22. 爲什麼我不能在綁定一個的.aspx財產,而它在的.xaml
- 23. 爲什麼在我告訴它之前我的面板渲染?
- 24. Javascript:我怎樣才能'宣佈'一個函數而不需要調用它?
- 25. Node.js和Socket.io我怎麼能發射DOM對象,而它似乎不可能?
- 26. 有人能告訴我爲什麼它失敗了嗎?
- 27. System.Data.Linq,我怎麼不能引用它?
- 28. JS - 它是什麼類型的對象,我怎樣才能訪問它
- 29. 我怎麼能告訴Maven的捆綁依賴罐子
- 30. haskell函數不工作,誰能告訴我爲什麼?
啊哈,無賴。 (這裏) – prismofeverything 2009-11-14 19:38:03