所谓继承: 就是子对象自动拥有父对象的属性和方法, 继承可以提 高代码的复用性。 JS里的继承主要依靠是的原型链。让原型对象(每一个构造函数都有一个原型对象porotype)的值,等于另一个类型的实例,即实现了继 承;另外一个类型的原型再指向第三个类型的实例,以此类推,也 就形成了一个原型链。
作用:实现实例共享方法和属性的继承,原型继承。
优点:不用将每个实例一样的属性和方法放在构造函数中,每次new都会创造内存,浪费内存,prototype减少内存的浪费
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
</body>
</html>
<script type="text/javascript">
//定义Animal类
function Animal(age){
this.age = age;
}
Animal.prototype.go = function(){
alert("跑");
}
//定义Person类(ES3中叫对象)
function Person(id,name){
this.id = id;
this.name = name;
}
Person.prototype = new Animal(10);
Person.prototype.eat = function(str){
alert(this.name+"在吃"+str);
}
//定义Programmer类型
function Programmer(language){
this.language = language;
}
//用prototype属性实现继承
Programmer.prototype = new Person("007","冲儿",28);
Programmer.prototype.writeCode=function(xuqiu){
alert(this.name+"用"+this.language+"编程语言,努力地写着"+xuqiu);
}
window.onload = function(){
let p1 = new Programmer("js");
p1.eat("泡面");
p1.go();
p1.writeCode("飞机大战");
}
</script>
01prototype继承的内存示意图:
02prototype继承示意图(子类自己特有的prototype方法)