你的位置:首页 > 软件开发 > Java > call,apply,bind

call,apply,bind

发布时间:2016-04-12 01:00:11
一、call&applycall, apply都属于Function.prototype的方法,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性啦。如果不明白,请见“Javas ...

call,apply,bind

一、call&apply

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 (#换成@)。

可能感兴趣文章

我的浏览记录