当试图单独执行以下两个代码块: 第一招: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