// this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象.
// 根据函数调用的方式不同,this会指向不同的对象,跟创建方式没有关系.
// 1、以函数的形式调用时。this指向的是window
function fun() {
console.log(this.name)
}
// fun();
// 2、以方法的形式调用时,this就是调用方法的那个对象
var obj={
name:"小明",
aa:fun
};
// obj.aa();
// 3、如果不在第一层调用,那么this只会指向当前层
var a={
b:5,
c:{
b: 10,
d:function () {
console.log(this.b)
}
}
};
// a.c.d()
// 4、如果将这个方法赋值给变量时,this会改变对象的指向
var n={
name:"狗子",
firstname:function () {
console.log(this.name)
}
};
var x={
name:"笨蛋"
};
x.firstname=n.firstname;
// x.firstname()
n.firstname()
// 5、在构造函数中,this的指向实例化的对象
var person=function () {
this.name="蔡徐坤"
};
var cxk=new person ();
// console.log(cxk.name)