关于前端:原型链及其继承

36次阅读

共计 661 个字符,预计需要花费 2 分钟才能阅读完成。

继承的目标就是为了让一个援用类型能够应用另一个援用类型的属性和办法

首先写一个父类

//constructor 构造函数
function Animal(name) {this.name = name}
// 增加原型办法
Animal.prototype.eat = function(food) {console.log(this.name + "正在吃" + this.food)
} 
var cat = new Animal('cat')
console.log(cat)

截图中能够看到实例 cat 自带的构造方法属性和原型办法

1. 原型链继承

//constructor 构造函数
function Animal(name) {this.name = name}
// 增加原型办法
Animal.prototype.eat = function(food) {console.log(this.name + "正在吃" + this.food)
}

// 子类的构造函数
function Cat() {}
Cat.prototype = new Animal(); // 重点代码
Cat.prototype.name = 'cat';

var cat = new Cat() 
console.log(cat)

特点:

1.cat 是 Cat() 的实例,也是 Animal() 的实例
2.Cat() 和 Animal() 新增属性和办法,cat 都能拜访到 

毛病:

1. 想为 Cat() 新增属性和办法,必须要在 new Animal() 这样的语句之后执行
2. 来自原型对象的所有属性被所有实例共享,造成非必要内存空间
3. 创立 cat 实例时,无奈向父类构造函数传参

2. 结构继承

正文完
 0