prototype
所有的函数都有一个prototype
属性
将函数看成是一个普通的对象时,它具备__proto__
属性
构造函数Parent
有一个原型对象Parent.prototype
上面有一个constructor
Parent
可以通过 prototype 指向原型
原型Parent.prototype
可以通过constructor
指向构造函数
function Parent() {
this.name = "parent";
}
var p = new Parent();
console.log(p.__proto__ === Parent.prototype); // true
__proto__
是一个指向原型对象的指针,它指向的是Parent.prototype
可以使用 getPrototypeOf
如果要创建一个新的对象同时继承另一个对象的属性,可以使用Object.create
function Parent() {
this.name = "parent";
}
var p = new Parent();
var p1 = Object.create(p);
创造原型对象的方法
function createObject(o) {
function f() {}
f.prototype = o;
return new f();
}
//创建对象的过程
function inherit(Subtype, Supertype) {
Subtype.prototype = createObject(Supertype);
Object.defineProperty(Subtype.prototype, "constructor", {
enumerable: false,
configurable: true,
writable: true,
vlaue: Subtype,
});
}
//寄生式函数