1. 全局函数可以把this 当做中文的 我 谁 `调用` 我,我就指向谁
1. 全局函数 : this指向window
2. 对象方法 : this指向对象
3. 构造函数 : this指向new创建的空对象
//1.全局函数
function fn(){
console.log('111111')
console.log(this);
}
fn() //window.fn()
2. 对象方法
//2.对象的方法
let obj = {
name:'班长',
sayHi:function(){
console.log('我是喜羊羊')
console.log(this)
}
}
obj.sayHi()
//将fn的地址赋值给sayHi
obj.sayHi = fn
//此时this指向obj,this指向跟声明没有关系。取决于函数是如何调用的
obj.sayHi()
3. 构造函数
//3.构造函数
function Person(name,age){
//(1)创建一个空对象 (2)this指向这个对象 (3)执行赋值代码 (4)返回这个对象
//this :指向new创建的哪个对象
console.log(this)
this.name = name
this.age = age
};
let p1 = new Person()//构造函数
//没有加new,以全局函数方式执行。此时this就是window,函数里面其实是给window添加属性(全局变量)
Person('张三',18)//全局函数
console.log(name)
console.log(age)
4. 总结:
4.1 this指向(它就是一个环境对象)
4.2 面试中经常会问的 小技巧 :
1. 没点没new是window,
2. 有new是实例
3. 有点是点左边的对象
4.3 this不能使用在静态方法中
4.4 this出现在实例方法中其实代表的是当前对象
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)