木灵鱼儿

木灵鱼儿

阅读:772

最后更新:2018/11/21/ 22:49:45

call()方法 对象冒充

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
文章被阅读 772

相关文章

目录树