6
A
回答
7
約翰·雷西格解釋這種很好:http://ejohn.org/apps/learn/#36和http://ejohn.org/apps/learn/#38
基本上,Event
是一個功能和一個對象(功能對象)。 Event的第一行檢查它是作爲函數調用還是作爲Event對象的實例(使用new運算符)。
如果您正在尋找jQuery的具體是怎麼做的,看看jQuery source的3134-3138線:
jQuery.Event = function(src, props) {
// Allow instantiation without the 'new' keyword
if (!this.preventDefault) {
return new jQuery.Event(src, props);
}
而解釋是上the jQuery forms。
基本上,在行3178-3194上,preventDefault事件被添加到Event原型。如果事件使用new
進行實例化,則會使用此preventDefault方法。否則,它不會被定義。
3
任何用戶定義的JavaScript函數都可以通過或與new
運算符一起調用。沒有new
它就像一個普通的函數一樣工作(因爲它就是這樣)。使用new
時,解釋器會創建一個新的對象,其原型已適當設置,並使該對象成爲該調用的參數this
。這個新的對象是new
運算符的結果,除了,如果函數體return
是明確的值;然後返回值管理。
所以,如果你寫
function foo() {
return { bar: 42 };
}
可以稱之爲或者沒有或new
- 有沒有區別,因爲身體總是明確地返回一個值,並且從未使用其this
。
相關問題
- 1. 'new'操作符理解
- 2. Graphql可選操作變量
- 3. 使用PPL和操作符new override
- 4. 提高IPC new和delete操作
- 5. 不可選擇的操作項Android Android夏洛克操作欄
- 6. 選擇操作
- 7. 如何在重載的新操作符中使用new操作符?
- 8. C++ new操作符是如何工作的內部
- 9. DataGridViewRow選擇操作
- 10. 選擇框操作
- 11. 操作複選框
- 12. C++ - 在調試過程中無法使用'new'操作符
- 13. MinGW中的全局超載操作符new/delete
- 14. New-VM - 「該操作在此對象上不受支持」
- 15. 刪除向量的元素,它是使用new操作符allocted
- 16. new操作符返回更多的內存比要求
- 17. 添加#define new時,不是公認的操作符或類型
- 18. 有關操作問題的new()和operator delete()
- 19. new操作符不調用構造函數
- 20. New-StreamAnalyticsJob無法爲IOT中心創建操作監控輸入
- 21. 可可數據操作
- 22. 可可:操作處理
- 23. 可疑操作Django
- 24. 什麼是openssl -new選項?
- 25. 複選框在New Relic的
- 26. jstree複選框操作
- 27. HTML JavaScript的選擇操作
- 28. jQuery的複選框操作
- 29. Redis設置操作選項
- 30. 下拉選項和操作
什麼是'this.preventDefault'? – Randomblue
查看我的帖子以獲取更新。 –