js继承方法有多种;
1.利用call()和apply()的方法。
call()里面接受多个参数;apply()只能接受两个参数。
call()第一个参数是本身,后面都是他的属性和方法。
apply()第一个参数是本身,第二个只能是数组。
代码如下:
<script type="text/javascript">
function Person(name,sex){
this.name=name;
this.sex=sex;
this.info=function(){
console.log(this.name);
}
}
function Teacher(name,sex,course){
Person.call(this,name,sex)//Person.apply(this,[name,sex])
this.course=course;
this.infoCourse=function(){
console.log(this.course)
}
}
var t=new Teacher("张三","男","英语");
console.log(t.name)
</script>
2.利用prototype独立出来给其添加子级。
此方法可以添加多个属性和方法。
主要是子级继承父级独立出来的东西。
其父级没独立出来的不能传入。
代码如下:
<script type="text/javascript">
function A(name){
this.name=name;
}
//给A添加一个方法
A.prototype.say=function(){
console.log(22)
}
A.prototype.index=11;
function B(name,age){this.age=age;
}
//子级继承父级的独立出来的东西
B.prototype=new A();
var b=new B(20,11)
b.say();
console.log(b.name)
console.log(b.index)
</script>
3.利用复制的方法。
思想是把父级里面的属性和方法便利一遍给给子级。
方法如下:
<script>
function A(name){
this.name=name;
this.say=function(){
console.log("hello");
};
};
function B(name){
var a=new A(name);
//便利数组里的所有的元素
for(var i in a){
//获取里面的所有的属性和方法。
B.prototype[i]=a[i];
};
};
var b=new B("name");
console.log(b.name);
</script>