JS面向对象 - 构造函数 - 继承

继承 : 子类继承父类的属性和方法

好处 : 减少代码量, 公共的父类可以复用. 降低耦合度.

JS里实现继承的方法 : 

1. 通过改变构造构造函数中对象的指向实现继承

2. 通过原型链实现继承.


function Animal(){
    this.species = "哺乳动物";
    this.place = "地球";
}

function Cat(){
    Animal.call(this);
    this.name = "加菲";
    this.color = "橘色"
}

var cat = new Cat(); //new出一个实例

改变调用对象的方法 :

1. call()  参数1: 要改变成的对象, 参数2: 往后多个参数: Fun的参数

2. apply() 用法及与call的区别>>

var obj = {};
function test(a,b,c){
    console.log(this,a,b,c);
}
test.call(obj,1,2,3);
test(); //{},1,2,3

原型链实现继承 :

使用构造函数的prototype 属性, 如果Cat 构造函数的原型对象被赋值成了 Animal 构造函数的实例对象, 因为所有Cat 构造函数的实例对象都会拥有自己构造函数原型对象里的 所有属性和方法, 所以Cat构造函数的实例对象里 就会拥有Animal 构造函数里的所有属性和方法.

无法通过construtor 属性找到自己的构造函数

Cat.prototype = new Animal();
var cat1 = new Cat();
console.log(cat1.species, cat1.place);
//修复 constructor 问题
Cat.prototype.constructor = Cat; 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值