javascript - 为什么构造函数改变了?

标签 javascript prototype

为什么添加原型(prototype)后构造函数从Foo变成了Object?我怎样才能访问原始构造函数?

代码:

function Foo() {}
var foo1 = new Foo();
console.log('foo1: ' + foo1.constructor);

Foo.prototype = {}
var foo2 = new Foo();
console.log('foo2: ' + foo2.constructor);

输出:

foo1: function Foo() {}

foo2: function Object() {
    [native code]
}

http://jsfiddle.net/vDCTJ/

最佳答案

发生这种情况是因为您为 Foo 的原型(prototype)提供了一个全新的对象,而您没有设置该对象的“构造函数”属性。

Foo.prototype = { constructor: Foo };

实例化的函数对象为其“原型(prototype)”属性获取一个对象,该对象已经以这种方式初始化。

关于javascript - 为什么构造函数改变了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16826535/

相关文章:

javascript - 设置 Express JS 应用程序

javascript - 如何撤销 .click(false)

javascript - jquery 数据属性集不起作用

javascript - 比较对象数组 : Ramda way

javascript - 循环链表和更改原型(prototype)中对象属性的错误

javascript - 为什么 getPrototypeOf() 在 JavaScript 中返回不正确的构造函数?

javascript - 合并对象使用 javascript 中的加法保留它的值

javascript - 原型(prototype)上定义的函数如何访问私有(private)变量?

JavaScript 原型(prototype)属性和原型(prototype)链接

Javascript、jQuery.extend 和 "new"