继承

混入式继承

一个对象拷贝另外一个对象的所有成员

//遍历

for(var k in obj1){
    obj1[k]=obj2[k]
}
Object.prototype.color='pink'
//for in 循环会把原型链上能找到的属性全部遍历
//hasOwnProperty判断属性是否是对象自身的属性
for(var k in obj1){
    if(obj1.hasOwnProperty(k){
        this[k]=obj1[k]
    }
    obj1[k]=obj2[k]
}
复制代码

原型链继承

一个对象可以访问构造函数原型上的属性和方法,如果想要让一个对象增加某些属性和方法,只要把属性和方法添加到原型对象中

//原型替换,会造成constructor属性丢失的问题,手动添加即可
Person.prototype={
    constructor:Person,
    age:18,
    name:'ls',
    render:function(){
        console.log('render')
    }
}
复制代码

混入式+原型链继承

给构造函数的原型添加混入式方法,

Person.prototype.extend(obj){
    for(var k in obj1){
    if(obj1.hasOwnProperty(k){
        this[k]=obj1[k]
    }
    obj1[k]=obj2[k]
    }
}
var p = new Person()
//传对象调用,p上就可以继承多个对象的属性和方法了
复制代码

经典继承

语法: var newobj = Object.create(obj)

作用:创建并返回一个新对象,新对象的原型就是参数obj

var o={
    sex:'man',
    age:18
}
var o2=Object.create(o)
console.log(o2.__proto__==o)
复制代码

借用构造函数继承

function Mine(name,age,sex){
    this.name=name
    this.age=age
    this.sex=sex
}
function Her(height){
    Mine.call(this,name,age,sex)
    this.height=height
}复制代码

转载于:https://juejin.im/post/5cb866ec6fb9a068864218a7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值