尝试分别执行以下两个代码块时:
第一个:

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的控制台中得到的结果是第一个是“ Object {}”,第二个是“ Hallo()”。
虽然第二个很容易理解,但是第一个确实很奇怪。因为据我所知,第一个中obj Object的构造函数仍然相同(即Hallo()函数)。
但是我得到了Object()函数。
我真的不明白为什么。你能帮我吗?
谢谢!

最佳答案

原因是:

当您执行var obj = new Hallo();

console.log(obj.constructor === Hallo.prototype.constructor); // true


在第一个示例中,您为Hallo.prototype分配了一个新对象,该对象的constructor是函数Objectfunction Object(){...})。

在第二个示例中,Hallo.prototype.constructor仍为function Hallo() {...}

09-20 12:10