javascript基础--对象(Object)继承

引言

上一节《javascript基础–对象(Object)封装》讲了如何造人,这一节将会总结怎么理清人与人之间的血缘关系,即继承关系。对象继承简单地分为两类,构造函数继承和非构造函数继承。所谓构造函数继承就是利用this绑定对象的模式创建的对象之间的继承关系;而非构造函数继承就是利用对象字面量创建的对象之间的继承关系。上代码:

//Person父对象利用this绑定,子对象Tom,Linda也同样采用这种模式创建
function Person(name,sex){
   
    this.name = name;
    this.sex = sex;
}
Person.prototype.say = function(){
   
    console.log(this.name +' is ' + this.sex);
}
//创建的Tom,Linda去继承Person父对象,此种继承成为构造函数继承
//Person采用对象字面量创建,子对象Tom,Linda也同样采用这种模式创建
var Person = {
    Pname: 'Person',
    Psex: 'Person sex is male or female',
    say: function(){
   
        console.log('haha');
    }
}
//创建的Tom,Linda去继承Person父对象,此种继承成为非构造函数继承

1.构造函数继承

首先确定父对象,即引言内的父对象,copy下来

function Person(name,sex){
   
    this.name = name;
    this.sex = sex;
}
Person.prototype.say = function(){
   
    console.log(this.name +' is ' + this.sex);
}

我们的任务是创建Tom和Linda去继承Person,我们先创建子对象模型

//Tom构造函数
function Tom(name,sex){
   }
Tom.prototype = {}
var T = new Tom('Tom','male');
//Linda构造函数
function Linda(name,sex){
   }
Linda.prototype = {}
var L = new Linda('Linda','female');

分析:父对象Person中属性和方法分为两部分,name和sex属性是在构造函数Person上,而say方法是在Person.prototype上。所以要继承Person所有属性和方法,分为两步,即继承构造函数上的属性和继承原型对象上的方法。

2.构造函数继承–对象冒充

对象冒充,是利用call或者apply方法,将父对象的属性和方法绑定在子对象上,从而完成构造函数上属性和方法的继承,但是person原型对象上的say方法不会继承。这里简单介绍一下call和apply

//call定义
A.call(B,Object);
//释义:调用A对象的方法,以B对象替换当前的A对象,其中参数是Object
//apply定义
A.apply(B,array);
//释义:调用A对象的方法,以B对象替换当前的A对象,其中参数必须是Array类型
//so call和apply区别就在参数的形式上不同

现在来完善Tom和Linda构造函数

//Tom构造函数
function Tom(name,sex){
   
    Person.apply(this,arguments);
}
Tom.prototype = {}
var T = new Tom('Tom','male');
//Lin
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值