當試圖單獨執行以下兩個代碼塊: 第一招:JavaScript構造函數
function Hallo() {
}
var some_obj = {
name: "Fred",
age: 23,
}
Hallo.prototype = some_obj;
var obj = new Hallo();
obj.constructor;
,第二個:
function Hallo() {
}
Hallo.prototype.name = 'Khanh';
Hallo.prototype.age = 23;
var obj = new Hallo();
obj.constructor;
我得到的結果在Firebug的控制檯「對象{}「,第二個是」Hallo()「。 雖然第二個很容易理解,但第一個很奇怪。因爲我知道第一個obj Object的構造函數仍然是相同的(即Hallo()函數)。 但是我得到了Object()函數的結果。 我真的不明白爲什麼。你能幫我嗎? 謝謝!
你覆蓋在第一個例子整個'prototype',但在第二個你只增加兩個新的屬性。 – Blender
是的,我知道,但構造函數仍然是一樣的,不是嗎?我關心構造函數。 –
當您覆蓋*整個*原型時,'構造函數'被您的對象的構造函數覆蓋。 – Blender