call()和apply()的区别

xiaoxiao2021-02-28  88

解决问题:

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()

转载请注明原文地址: https://www.6miu.com/read-47116.html

最新回复(0)