返回原始类型有什么危险?

时间:2016-07-06 08:27:58

标签: javascript types constructor

@TobyHo

  

NumberStringBoolean都是原始类型。如果从构造函数返回这些类型的值之一,它将被忽略,构造函数将返回其返回此对象的正常行为。

  • 返回原始类型的危险是什么(因为构造函数返回它的正常行为)?

1 个答案:

答案 0 :(得分:1)

请注意,从技术上讲,任何函数都可以用作构造函数。

但为了强调功能,构思为构造函数,它们被称为大写字母:动物,而不是动物。

通常情况下,构造函数不会返回任何内容 - 他们的任务 - 写下您需要的所有内容,在此,将自动生成

但是如果仍然存在对return的显式调用,那么它将应用一个简单的规则:

  • 当对对象的返回调用时,将返回而不是 此。
  • 当您调用返回原始值时,它将被丢弃。

例如,对象返回:

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)

这项工作的特点已在新标准中注册,但很少使用。