javascript - 为什么函数响应 .prototype 但常规对象不响应?

标签 javascript prototype undefined new-operator prototypal-inheritance

考虑:

function Foo() {}
var x = new Foo();

现在 x 和 Foo 具有相同的原型(prototype),但只有 Foo 响应 .prototype:

Object.getPrototype(x) === Foo.prototype // true
x.prototype === Foo.prototype // false

Foo.prototype // Foo {} (depending on which browser)
x.prototype // undefined

为什么 x.prototype 不起作用,而 Foo.prototype 却起作用?

最佳答案

prototype 是构造函数的一个属性,它确定由该构造函数创建的新对象的原型(prototype)是什么。只有在构造函数上具有这样的属性才有用。

只要构造函数上的原型(prototype)没有改变:

Object.getPrototypeOf( x ) === Foo.prototype

这与:

Object.getPrototypeOf( x ) === x.constructor.prototype

一般注意:

Object.getPrototypeOf( Foo ) != Foo.prototype

关于javascript - 为什么函数响应 .prototype 但常规对象不响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34709911/

相关文章:

java - JSON.parse(result.responseText) 中的无效字符;

javascript - 使用相同 View 的 React-Native 2 按钮

c - 使用 itoa() 结果为 : "assignment makes pointer from integer without a cast"

javascript - JS 原型(prototype)继承的意外结果

javascript - 在 Vue JS 中,从 vue 实例中的方法调用过滤器,但 $options 未定义

javascript - 展开 javascript 循环

javascript - javascript中两种原型(prototype)设置代码的区别

c++ - "undefined reference to"共享库中的许多(全部?)函数(新手)

javascript迭代对象 - 第一个元素未定义

javascript - 使用 Canvas 连接具有相同类的元素