我通过以下方式了解 javascript 原型继承__proto__
财产。但是我注意到当我这样做时var f = function() {}
f 现在将有一个prototype
财产除了__proto__
财产。看来prototype
不参与财产连锁。到底是什么does it do?
它被指定为通过使用该函数创建的对象的原型new
关键词。
例如:
function Foo() {
}
Foo.prototype.bar = 47;
var obj = new Foo();
alert(obj.bar); // alerts 47, via `obj`'s prototype
之间的参考obj
以及分配给的对象Foo.prototype
是一个实时的,所以添加更多的东西Foo.prototype
会让他们出现在obj
的原型:
Foo.prototype.charlie = 62;
alert(obj.charlie); // alerts 62
当然,如果你replace Foo.prototype
(我不鼓励这样做),那么你指的是Foo.prototype
在不同的物体上。obj
仍会引用旧的:
Foo.prototype = {delta: 77}; // Not recommended
alert(obj.delta); // alerts "undefined"
免费的实例 http://jsbin.com/okeri4
关于__proto__
: __proto__
是非标准的。之前ECMAScript5 http://www.ecma-international.org/publications/standards/Ecma-262.htm(只有一年半的历史),有no直接与对象原型交互的标准方法,您只能在对象创建时分配它们,并且只能通过构造函数间接分配prototype
财产。__proto__
是某些 JavaScript 引擎(最著名的是 Mozilla 的 SpiderMonkey,Firefox 中的引擎)中的专有扩展。它不在任何标准中,而且根据 ECMAScript 委员会的说法,它也不会出现在任何标准中。 (相反,ECMAScript5 提供功能用于与对象的原型交互。)__proto__现已弃用 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/proto由 Mozilla 提供。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)