prototype JavaScript函数对象的属性复制到内部 [[Prototype]] __proto__ )使用函数作为构造函数实例化的对象。因此,我可以将此属性设置为任何要用作原型的对象:
prototype
[[Prototype]]
__proto__
function Foo() {} Foo.prototype = { toString: function() { return "I'm a Foo!"; } } new Foo().toString() // --> "I'm a Foo!"
现有的
function Bar() {} Bar.prototype.toString = function() { return "I'm a Bar!"; } new Bar().toString() // --> "I'm a Bar!"
但我不清楚 初始值 原型 财产是。
原型
function Baz() {} Baz.prototype // --> Baz { // constructor: function Baz() {}, // __proto__: Object // }
二 物体?一个用于函数本身 constructor )一个是原型机?
constructor
这是在ECMAScript标准中定义的吗?我试图找到它,但找不到。是否所有浏览器都以相同的方式处理这个问题?
初始值 prototype Function 实例是的新实例 Object ,但拥有自己的财产 constructor 设置为指向新函数。
Function
Object
ECMA262-5在13.2节中以典型的ECMAScript规范完全不可读的方式描述了这一点:
原型 是创建一个新对象的结果,该对象将由表达式构造 new Object() 哪里 对象 (17.)调用 原型 带参数“constructor”,属性描述符 (18.)使用参数“prototype”、属性描述符{[[Value]]调用F的[[DefineOwnProperty]]内部方法: proto
原型 是创建一个新对象的结果,该对象将由表达式构造 new Object() 哪里 对象
new Object()
对象
(17.)调用 原型 带参数“constructor”,属性描述符
(18.)使用参数“prototype”、属性描述符{[[Value]]调用F的[[DefineOwnProperty]]内部方法: proto
proto