一、call&applycall, apply都属于Function.prototype的方法,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性啦。如果不明白,请见“Javas ...
call, apply都属于Function.prototype的方法,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性啦。
如果不明白,请见“Javascript之一切皆为对象3”。
而且它们的作用都是一样的,只是使用方式不同而已。
作用:借用别人的方法来调用,就像自己有这个方法一样。
咦,那它们怎样才能达到这目的呢?
对象。
对象?
是的,其实就是改变执行上下文对象的内部指针,因为在Javascript中,代码总有一个执行上下文对象,那么当我手动改变它时,就可以改变这个执行上下文啦,也就可以利用非自己的方法成为自己的方法哦。
我们一起来写个Demo。
假如,我有一个方法a,它的作用是输出对象的名字this.name;那么当我使用call或者apply改变它的执行上下文对象时,它的输出结果是不一样的。
什么意思?
详情请见下代码:
<!DOCTYPE html> <head> <title>call&apply</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <script> var name = 'windowName'; //方法a的作用,是输出对象的名字 function a(){ console.log(this.name); } function b(){ this.name = 'bName'; } //将a方法的执行上下文对象指向window a.call(window); //将a方法的执行上下文对象指向new b() a.call(new b()); </script> </body></html>
原标题:call,apply,bind
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。