前面的继承一中简单的描述了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>运行结果: