他的意思是:
"当创建一个函数对象时,Function构造函数就是 生成函数对象运行如下代码:
this.prototype = {constructor: this};
给新函数对象一个原型属性,其值为 包含构造函数属性的对象,其值为new 功能对象"
举例说明会很棒。
答案 0 :(得分:6)
例如,当您定义此构造函数时:
function MyConstructor() {
// ...
}
它会自动收到prototype
属性。它的值是一个具有constructor
属性的对象,它指向构造函数:
MyConstructor.prototype; // some object
MyConstructor.prototype.constructor; // MyConstructor
这在Creating Function Objects中指定:
- 创建一个新的本机ECMAScript对象,让 F 成为该对象。
醇>
- 让 proto 是创建一个新对象的结果,因为
new Object()
表达式构建了一个新对象,其中Object
是 具有该名称的标准内置构造函数。- 使用参数
"constructor"
,Property Descriptor {[[Value]]: F 调用 proto 的[[DefineOwnProperty]]内部方法, { [[可写]]: true ,[[Enumerable]]: false ,[[Configurable]]: true }, false 。- 使用参数
醇>"prototype"
,Property Descriptor调用 F 的[[DefineOwnProperty]]内部方法 {[[Value]]: proto ,{[[Writable]]: true ,[[Enumerable]]: false ,[[Configurable]]: false }, false 。
然后,构造函数的实例将从其prototype
对象继承:
var myInstance = new MyConstructor();
Object.getPrototypeOf(myInstance); // MyConstructor.prototype
如果您想知道用于创建实例的构造函数,可以使用constructor
属性,该属性有望被继承:
myInstance.constructor; // MyConstructor