标识原型,对象通过原型可挂载到类上(继承)
function Obj(param) {
this.a = param
}
Obj.prototype.print = function() {
console.log(this.a)
}
const a = new Obj("hello")
a.print() // output: hello
以上可以形成原型链(prototype chain)
《proto:将要继承的对象挂载在新对象的某个属性上》
a.__proto__ === Obj.prototype //output true
《constructor: 一个函数(比如上面的 Obj)的 prototype 有个 constructor 属性,默认(可以改)指向函数本身。》
Obj.prototype.constructor === Obj //output: true
const ele = Document.body;
let result = "";
let parentClass = ele.constructor; //获取父类
let parentProto = parentClass.prototype; //获取父类的原型
while(parentProto) {
result += "->" + parent.name;
parentClass = parentClass.constructor; //获取父类
parentProto = parentClass.prototype; //获取父类的原型
// 可通过Object.getPrototypeOf(ele)获取父类的原型,等同于ele.constructor.prototype
}