应该大家都有所耳闻,call和apply的区别,call传参是多个参数,而apply传参则是一个数组,其他的基本没啥区别。
那没啥区别为什么还要写出来。
之前有这么一题让我猛然一惊(不知道为什么学习JS经常出现这样的时刻)
function a () {
alert (this);
}
a.call (null);//[object Window]
其实也没什么好惊的,就是再从新详细地复习一遍具体概念。
fun.call(thisArg,arg1,arg2, ...)
参数
thisArg
在fun函数运行时指定的this值。需要注意的是,指定的this值并不一定是该函数执行时真正的this值,如果这个函数处于非严格模式下,则指定为null和undefined的this值会自动指向全局对象(浏览器中就是window对象),同时值为原始值(数字,字符串,布尔值)的this会指向该原始值的自动包装对象。
arg1, arg2, ...
指定的参数列表。
返回值Edit
返回结果包括指定的this值和参数。
至于apply差不多了。
那说到这两个就绕不开this。
函数在哪里调用才决定了this引用的对象
this机制的四种规则
1默认绑定全局变量window
2隐式绑定
3显式绑定bind()\apply()\call()
4new新对象绑定,绑定的是新建的对象
当然了实际情况比网上的例子复杂多了……
那就来练习一下好了!
---等我找到新题型再来repo








网友评论