41.0 JavaScript this
解析器在调用函数每次都会向函数内部传递一个隐含的参数
这个隐含的参数就是this,this指向的是一个对象,
这个对象我们称为函数执行的上下文对象,
根据函数调用方式不同,this会指向不同的对象
总结this:
1.以函数的形式调用时,this永远都是window
2.以方法的形式调用是,this就是调用方法的那个对象
function fun(a,b){形参
console.log("a="+a+", b="+b);
console.log(this);
}
fun(12,34);实参
function sayHello(){
console.log(this);
}
sayHello();
var obj={
name:"zhangsan",
sayWord:sayHello
};
obj.sayWord();函数以方法的形式被调用时,this指向的是调用方法的对象
var name="全部作用域中的变量name";
function fun(){
console.log(this.name);
}
var obja={
name:"zhangsan",
sayWord:fun
};
var objb={
name:"wangwu",
sayWord:fun
};
fun();
我希望,调用fun方法的时候,他可以输出,对象的name属性
obja.sayWord();
objb.sayWord();
var obj1={
name:"小明",
age:23,
gender:"男",
sayhello:function(){
console.log("大家好!我是"+this.name);
}
};
obj.sayhello();
var obj2={
name:"小红",
age:23,
gender:"女",
sayhello:function(){
console.log("大家好!我是"+this.name);
}
};
var obj3={
name:"小蓝",
age:23,
gender:"男",
sayhello:function(){
console.log("大家好!我是"+this.name);
}
};
使用工厂方法创建对象
通过该方法可以大批量的创建对象
function creatPerson(name,age,gengder){
var obj=new Object();
obj.name=name;
obj.age=age;
obj.gender=gengder;
obj.sayhello=function(){
console.log("大家好!我是"+this.name);
}
return obj;
}