this关键字,指代函数执行时的当前对象;
1,作为一个函数调用:
function myFunction(a,b){
return a*b;
// return this; // 返回window对象
}
myFunction(3,4); // 12
当前的this,是全局的,属于window对象,window.myFunction() // 12
这种常用的方式,但是不是良好的编程习惯,全局变量,方法和函数,容易造成命令冲突的bug;
2,函数作为方法调用:
var myObject={
firstName:"zeng",
lastName:"fanfan",
fullName:function(){
return this.firstName+" "+this.lastName;
return this; // [object,object] (所有者对象)
}
}
myObject.fullName(); // zeng fanfan
3:使用构造函数调用函数:
function myFunction(arg1,arg2){
this.firstName=arg1;
this.lastName=arg2;
}
var x=new myFunction("zeng","fanfan");
x.firstName; //返回 zeng
4,作为函数方法调用函数;
: call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。
var myObject;
function myFunction(a,b){
return a*b;
}
myObject=myFunction.call(myObject , 3 , 4); //返回 12
或:
function myFunction(a,b){
return a*b;
}
var myArray=[3,4];
var myObject=myFunction.apply(myObject . myArray) //返回12