我的測試是基於創建函數的知識,這些函數將在JavaScript中作爲構造函數調用。關於JavaScript中的fallback構造函數模式?
function Clonetrooper(name, rank, age) {
this.name = name;
this.rank = rank;
this.age = age;
我已經得到了到使用此行代碼
if (!(this instanceof Clonetrooper)) return new Clonetrooper();
}
,以防止函數被調用時沒有新的關鍵字的做法。
老師/評分者注意到以下評論。
這是沒有必要的,實際上並沒有做你想要的 它要做什麼。 這將在'this'上設置屬性,然後返回Clonetrooper完全獨立的實例 而不設置這些屬性。
爲了公平起見我也忘了加上道具,像這樣......
if (!(this instanceof Clonetrooper)) return new Clonetrooper(name, rank, age);
但實際上,事實證明,這並不重要......
做它像這樣,(像在原始的代碼)
if (!(this instanceof Clonetrooper)) return new Clonetrooper();
將返回一個對象,具有這些性質,它們僅保存值undefined
new Clonetrooper
Clonetrooper {name: undefined, rank: undefined, age: undefined}
那麼有人可以解釋他們的含義嗎?
你期待什麼?該函數需要三個參數,如果你不傳遞任何東西給它,那些參數將有'undefined'作爲值。 –
@ibrahimmahrir用這些屬性返回的對象。這似乎是正確的。 –
試試這個:'return new Clonetrooper(name,rank);'以獲得更好的理解(只有'age'將會是'undefined')。 –