js对象继承的问题

时间:2021-07-25 06:04:43

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>