前面的繼承一中簡單的描述了javascript的原型鏈繼承和屬性拷貝javascript
這裏簡單的用apply()和call()來實現 javascript中的繼承java
Object.apply(obj,agrs);數組
apply方法能劫持另一個對象的方法,繼承另一個對象的屬性
obj:這個對象將代替Function類裏this對象
args:這個是數組,它將做爲參數傳給Function(args-->arguments)app
這兩個方法基本上是一個意思,區別在於 call 的第二個參數能夠是任意類型,而apply的第二個參數必須是數組,也能夠是argumentsthis
<script type="text/javascript">
//人類
function Person(name,age){
this.name = name;
this.age = age;spa
this.say = function(){
console.log("Everyone can say !");
}rest
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);ip
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>
運行結果: