JavaScript中的fn()和新的fn()之间的根本区别


12

在所有方面,使用和不使用new关键字调用函数在javascript中有所不同?我的意思是所有事物之间都有什么不同?

testFn()new testFn()

Answers:


13

new创建一个新的(空的)对象,并设置this它,然后调用函数,它充当的构造函数对象(通过操纵this东西)。不使用new关键字调用相同的函数将使其作用于this当前含义。


还有什么呢?
akp

@akp不,它真的就是这么简单。除非未提及,否则如果该函数显式返回引用类型,则该引用类型将由返回,new并且浪费创建的对象。
Esailija

2
使用new将导致将新对象的原型设置为引用新对象传递到的第一个函数的原型。我认为不能通过其他方式合法地实现行为。
超级猫2014年

你说得对,我想念那件事。
user281377 2014年

1

这些变体在语法上是不同的:“ new”变体假定函数是构造函数。没有“ new”的变量假定它不是构造函数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.