现在我正在学习 JavaScript prototype
和 __proto__
,并找到了几个有用的链接
__proto__ VS. prototype in JavaScript
How does __proto__ differ from constructor.prototype?
我可以在 Chrome 下通过以下代码获取对象 f
的 __proto__
的值。
var Foo = function() {}
var f = new Foo();
f.__proto__
> Foo {}
但是,将Foo.prototype.__proto__
设置为null
后,__proto__
的值为undefined
.
var Foo = function() {}
Foo.prototype = {name: 'cat', age: 10};
Foo.prototype.__proto__ = null;
var f = new Foo();
f.__proto__
> undefined
但是我可以得到f.name
的值,也就是cat
。这是我的理解,因为f.name
的值是可取的,对象f
的__proto__
应该指向Foo.prototype
。为什么 f.__proto__
的值是 undefined
?
最佳答案
__proto__
是 JavaScript 的内部特殊属性。你不应该使用。
来自 mdn
While Object.prototype.proto is supported today in most browsers, its existence and exact behavior has only been standardized in the ECMAScript 6 specification as a legacy feature to ensure compatibility for web browsers. For better support, it is recommended that only Object.getPrototypeOf() be used instead.
关于javascript - 为什么可以检索原型(prototype)但 __proto__ 在 JavaScript 中未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31159621/