this是javascript中的一个关键字
this的使用分为两种情况
①在构造函数中,当使用new得到一个新的对象时,this代表新建的对象
②当this所在函数运行时,this代表调用者。其中像test()这样直接运行的函数它的调用者就是windows,还有call、apply、bind等一些特殊例子
call、apply、bind异同
三者都是用于改变上下文环境的,即this对象的指向
网上有些文章说他们改变了作用域链,自己写了简单代码测试不是的,只是改变执行上下文中的this
call、apply作用一样,区别在于接受参数方式。call是将参数按顺序传递进去,apply则是将参数放在数组中传递,而bind则是返回一个上下文确定的新对象。
<script type="text/javascript"> function x(A,B){ alert(A+B+this.C); } var C = 4; x(1,1);//6 var D = {C:5}; var y = x.bind(D); y(1,1);//7 var E = {C:6}; x.call(E,1,1);//8 x.apply(E,[1,1]);//8 </script>
callback回调函数
在js中回调函数的定义为:函数A作为参数传递到另一个函数B中,并且这个函数B执行函数A。我们就A为回调函数。如果它没有名称就叫匿名回调函数
<script type="text/javascript"> function n(A,B,callback){ var C = A+B; callback(C); } function x(A){ alert(A); } n(1,2,x);//3 n(1,2,function(A){alert(A+1);});//4 </script>