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
}
分类: JavaScript 标签: call方法对象冒充

评论

暂无评论数据

暂无评论数据

目录