2
Number
,String
,Boolean
,是所有基本类型。如果您从构造函数中返回这些类型的值中的一个,它将被忽略,并且构造函数将返回到返回此对象的正常行为。
- 什么是返回原始类型(因为它的构造函数返回到它的正常行为)的危险?
Number
,String
,Boolean
,是所有基本类型。如果您从构造函数中返回这些类型的值中的一个,它将被忽略,并且构造函数将返回到返回此对象的正常行为。
请注意,从技术上讲,任何函数都可以用作构造函数。
但为了突出这个函数,构造函数被认为是一个大写字母:Animal,而不是动物。
作为一项规则,构造函数没有返回anythingюTheir使命 - 写下来你的需要,在这一切,这将自动导致
但如果显式调用返回仍然存在,那么它适用于简单的规则:
例如,对象返回:
function BigAnimal() {
this.name = "Mouse";
return { name: "Godzilla " }; // <-- return the object
}
alert(new BigAnimal().name); // Godzilla, we got an object instead of this
下面是一行返回例如:
function BigAnimal() {
this.name = "Mouse";
return "Godzilla"; // <-- return the primitive
}
alert(new BigAnimal().name); // Mouse, received this (but Godzilla is gone)
新标准登记工作的此功能,但它很少使用。
没有“危险”。语言规范说,除非显式地返回一个对象,否则构造函数会返回它的隐式'this'。原始类型不是对象。因此,如果构造函数返回一个基本类型,则返回它的隐式'this'。 –
这不是危险。作者只是陈述发生了什么事实。了解这一点很有用。 – ADyson
@FrédéricHamidi当您调用返回到原始值时,它将被丢弃。请看我的答案。我举了一个这种情况发生的例子 –