this 指向
1. 说明
- 解析器在调用函数每次都会向函数内部传递进一个隐含的参数
- 这个隐含的参数就是 this,this 指向的是一个对象
- 这个对象我们称为函数执行的上下文对象
- 根据函数的调用方式的不同,this 会指向不同的对象
2. 以函数的形式调用时,this 永远都是 window
var name = "全局";
function fun() {
console.log(this.name);
}
fun();
3. 以方法的形式调用时,this 就是调用方法的那个对象
function fun() {
console.log(this.name);
}
var obj = {
name: "孙悟空",
sayName: fun,
};
var obj2 = {
name: "沙和尚",
sayName: fun,
};
console.log(obj.sayName == fun);
var name = "全局的name属性";
obj.sayName();
obj2.sayName();
4. 当以构造函数的形式调用时,this 就是新创建的那个对象
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
this.sayName = function () {
alert(this.name);
};
}
var per = new Person("孙悟空",18,"男");
console.log(per);