es5 原型继承
function Person (name,age,sex){
this.name = name,
this.age = age,
this.sex = sex
}
Person.prototype={
type:"灵长类",
sayName(){
console.log('i am'+this.name);
}
}
let wdw = new Person("小伟",18,"男");
此时我们需要继承该构造函数只需要把一个新的构造函数的原型方法指向我们的父级构造函数的实例化对象,但是不传递参数
function SuperMan(name,age,sex,skill){
Person.apply(this,[name,age,sex])
}
let spiderMan = new SuperMan("spiderMan",18,"男","爬墙");
console.log(spiderMan)
此时我们通过打印出来的可以看的出来实例化后的对象指向他父级构造函数的原型对象,同时他父元素的构造函数的对象原型然后理论上我们可以得到spiderman的constructor指向Supperman构造函数,但是我们打印出会发现他指向了object对象的构造函数,我们可以得出结论,利用原型方法继承父元素的属性时会破坏掉子元素的constructor属性指向问题会改变
所以我们这里手动改变一下spiderMan 对象的 constructor指向
spiderMan.constructor = SuperMan;
共有条评论 网友评论