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
查看我的帖子以获取更新。 –