call()方法 对象冒充

46 0

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
}
0
  • 本文分类:JavaScript
  • 本文标签:call方法对象冒充
  • 流行热度:已超过 46 人围观了本文
  • 发布日期:2018年11月21日 - 22时29分00秒
  • 版权申明:本文系作者@木灵鱼儿原创发布在木灵鱼儿站点。未经许可,禁止转载。
微信收款码
微信收款码