JS面向对象的继承三种方法:原型继承,原型冒充继承,复制继承

1.原型继承

function Dog(){
this.a = function(){
alert(“123”);
}
}

function SDog(){
this.b = function(){
alert(“321”);
}
}

//
Dog.prototype = new SDog();
var DD = new Dog();

DD.b();//继承了321

2.原型冒充继承

function Cat(leg,tail){
this.leg = leg;
this.tail = tail;
this.climd = function(){
alert(“我会爬树 “)
}
}

function Tiger(leg,tail,color){
this.color = color;
this.parent = Cat;
this.parent.apply(this,arguments);
delete this.parent;
}

var tiger = new Tiger(4,1,’blue’);
tiger.climd();

过程是什么?
答:其实就是,在用Tiger造对象前,用Tiger的语句影响一个空对象{},
在此过程中,Tiger影响空对象前,先有Cat函数实施影响

因此,最终得到的对象是由Cat和Tiger两者共同作用过的一个对象,所有Tiger对象有climd 不是从原型链中找过来的,是一个实实在在的属于这个对象

3.复制继承

//复制继承就是把父对象的所有属性,复制到自己对象上
function Cat(leg,tail){
this.leg = leg;
this.tail = tail;
this.climd = function(){
alert(“我会爬树 “);
}
}

function Tiger(color){
this.color = color;
this.extend = function(parent){
//循环一遍parent把这些东西复制到自身属性上
for(var key in parent){
// console.log(key);
this[key] = parent[key];
}
}
}

var tiger = new Tiger(‘red’);
console.log(tiger);//red,extend方法

tiger.extend(new Cat(4,1));//把传参过来的属性查询一遍
console.log(tiger);//red,extend方法,leg,tail,climd方法
tiger.climd();//可以使用方法

//复制继承的比原生链条继承好处:原生链一影响就是一大片下游的所有对象,复制继承只是copy,jQuery也用了复制继承

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值