前面的继承一中简单的描述了javascript的原型链继承和属性拷贝
这里简单的用apply()和call()来实现 javascript中的继承
Object.apply(obj,agrs);
apply方法能劫持另外一个对象的方法,继承另外一个对象的属性
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)
这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments
<script type="text/javascript">
//人类
function Person(name,age){
this.name = name;
this.age = age;
this.say = function(){
console.log("Everyone can say !");
}
this.eat = function(){
console.log("you can eat !");
}
}
//学生类
function Student(name,age){
Person.apply(this,arguments);
this.learn = function(){
console.log("Interesting ?");
}
}
var s1 = new Student("lee",14);
console.log(s1.name);
s1.say();
s1.eat();
s1.learn();
console.log("===============分割线===============");
//小学生类
function S_Student(name,age,sexy){
Student.apply(this,arguments);
this.sexy = sexy == 1 ? "男孩" : "女孩";
}
var s_s1 = new S_Student("Tom",10,2);
console.log(s_s1.name);
s_s1.eat();
s_s1.say();
s_s1.learn();
console.log(s_s1.sexy);
</script>
运行结果: