解决问题:
1、call()和apply()区别在哪里;
2、call()和apply()分别使用在哪种情况下;
详解:
apply:方法劫持另外一个对象的方法,继承另外一个对象的属性。
function.apply(object,arguments)能接收两个参数,一个是其中运行函数的作用域,另一个是参数数组。
function person (name,age) {
this.name = name;
this.age = age;
}
function student (name,age,sex) {
person.apply(this,arguments);
this.sex = sex;
}
var result = new student("John","25","女")
var str ="name:"+result.name+"\n"+"<br>"+"age:"+result.age+"\n"+"<br>"+"sex"+result.sex+"\n"
document.write(str)
person.apply(this,arguments)中,this的作用域指向的是student,且继承了person.name等的属性,添加属性sex,继而形成了str的结果。
call()的使用应该为:
person.call(this,name,age),这样就行了。
总结:若果参数是数组形式的则选用apply(),如果是直接指定参数则选用call()