在關於Bugs and Error Handling in Eloquent Javascript的章節中,我找到了以下一段代碼。我想知道爲什麼編寫者在原型上設置name屬性 - 而不是在構造函數中。爲什麼這個屬性在原型上定義 - 不在構造函數上?
function InputError(message) {
this.message = message;
this.stack = (new Error()).stack;
}
InputError.prototype = Object.create(Error.prototype);
InputError.prototype.name = "InputError";
在整本書中,他一直在定義原型構造函數和方法的屬性。 Nicholas Zakas建議在的Ch6中做同樣的事情,因爲他說,如果你在構造函數中定義了方法,那麼每次調用構造函數都會創建一個新的方法實例。這當然是相反的情況 - 在原型上定義一個屬性。
重申:我想知道的是,爲什麼作者可能在原型上定義了'name'屬性?
到目前爲止,我已經閱讀了這兩個SO帖子兩個無濟於事。
- 這告訴我什麼,我已經在上面提到的書籍閱讀。
Why defining properties in the prototype is considered an antipattern
-I並沒有真正理解這個職位,但我認爲這是無關緊要的,因爲它是在談論其他語言的模式。我關心的是JavaScript。