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當您調用返回到原始值時,它將被丟棄。請看我的答案。我舉了一個這種情況發生的例子 –