十一、call和apply
2017-02-15 本文已影响2人
幸福幸福幸福
下面介绍两个非常有用的方法:call()和apply()。通过这两个方法,我们能够让对象去借用其他对象中的方法,为己所用。这也是一种重用代码的方式。非常实用简单。
我们也可以理解为通过call的首参数修改了对象函数的this值(从some_obj变为了my_obj)。
如果有多个参数的话就在some_obj.say.call(my_obj,'Dudy','',''...)括号内一直写下去就可以了。
如果我们没有将对象传递给call()的首参数,或者传递的参数是null,他的调用对象会默认为全局对象。
apply用法和call基本一样,唯一不同之处在参数的传递形式,这里目标函数所需的参数都是通过一个数组的形式来传递的。所以下面两行代码的作用是等效的:
some_obj.say.call(my_obj,'a,','b','c');
some_obj.say.apply(my_obj,['a','b','c']);