正在加载中

最后更新于 2018年11月21日

call()对象冒充,最直白的记忆方法,就是更改this的指向,比如:

document.onclick = function() {
    fn();
};

function fn() {
    if (this === window) alert('window');
    if (this === document) alert('document');
}

这里我们知道,函数里面的函数,this指向的是window,那么我们使用call便可以让this指向document,用法如下:

document.onclick = function() {
    fn.call(this);  //这里的this填你要指向的对象,比如指向box,就填box,那么fn中的this指向的就是box对象!
};

function fn() {
    if (this === window) alert('window');
    if (this === document) alert('document');
}

这样便可以将this指向的是document了,然后在事件绑定中,IE的atachEvent()中,不像w3c的addEventListener()那样,this会指向绑定事件的对象,ie是直接指向window,于是我们可以使用call方法,改变this的指向。

call()也支持传输参数,call(this,1,2,3);1,2,3对应fn中出入的参数1,参数2,参数3,所以说call用处还是很大的。

例子:

document.onclick = function() {
    fn.call(this,666);  
};

function fn(value1) {
    if (this === window) alert('window');
    if (this === document) alert('document');
    alert(value1); 这里就会输出666
}
  • weixiao kaixin tushetou jingkong deyi fanu liezui liuhan daku ganga bishi nanguo lihai qian yiwen numu tu yi haixiu se fadai minyan hehe henkaixin huaji biyiyan kuanghan maimeng shui xiaku penqi zhangzui pen aini ye niu laji ok chigua renshi kongbu shuai xiaoxiese touxiao huaixiao jingnu chihuai kaisang xiaoku koubi zhuangbi lianhong kanbujian shafa zhijing xiangjiao dabian yaowan redjing lazhu rizhi duocang chixigua hejiu xixi xiaopen goukun xiaobuchu shenme wusuowei guancha lajing chouyan xiaochi bie zhadanzui zhadanxiao