您的位置:首页 > Web前端 > JavaScript

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

2019-03-27 21:33 274 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Haozi_Din/article/details/88855304

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

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

JS里实现继承的方法 : 

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

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

[code]
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的区别>>

[code]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 属性找到自己的构造函数

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

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: