JS中this/applay/call用法
关于this
this是指调用当前函数的对象。
var test = “tony”
function doSomething(){
alert(this.test); // “Tony”
alert(window.test); // “Tony”
}
闭包
例子一
var name = “the window”;
var object = {
name:”My object”,
doSomething:function(){
return function(){
return this.name
}
}
}
Alert(object.doSomething()()); // the window
例子二
var name = “the window”;
var object = {
name:”My object”,
doSomething:function(){
var abc = this;
return function(){
return abc.name;
}
}
}
Alert(object.doSomething()()) // My object;
Call
改变this所指的对象
例子一
var test = “Tony”;
var myobj = {
test:”TOM”
}
function doSomething(){
alert(this.test);
}
doSomething.call(); // “Tony”
doSomething.call(myobj); // myobj.test 即”TOM”
例子二
function doSomething(name, age){
alert(this.test + “:” + name +age);
}
doSomething(“Tony”,23); // Tony:Tony23
doSomething.call(myobj,”Tony”,23); // Tom:Tony23
Apply
与Call相比它的调用参数的形式不一样。
doSomething.apply(myobj,[“Tony”,23]);