解析器调用函数时每次都会向函数传递进一个隐含的参数this,this指向的是一个对象,这个对象称为函数执行的上下文对象。
根据函数的调用方式不同,this会指向不同的对象
(1)以函数的形式调用时,this永远都是window
(2)以方法的形式调用时,this就是调用方法的那个对象
(3)以构造函数的形式调用时,this就是新创建的哪个对象
function fun(){
console.log(this);
}
// 函数形式调用 this是Window
fun(); // object Window
// 创建一个对象
var obj = {
name: "孙悟空",
sayName: fun
};
// 方法形式调用 this是obj
obj.sayName(); // object Object
// 构造函数
function Person(name, age, gender){
this.name = name;
this.age = age;
this.gender = gender;
this.sayName = function(){
alert(this.name);
};
}
// 上面构造函数里的this就是新建的 per 对象
var per = new Person("孙悟空", 18, "男");
// 上面构造函数里的this就是新建的 per2 对象
var per2 = new Person("猪八戒", 28, "男");
标签:function,调用,name,对象,JavaScript,笔记,sayName,学习,构造函数
From: https://www.cnblogs.com/zibocoder/p/17033575.html