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
}
分类:
JavaScript
标签:
call方法对象冒充
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据