1.普通函数 this指向是,window
function sayHi(){
console.log(this)
}
sayHi();
2.对象函数 this的指向是,当前对象
var obj={
name:'小花',
age:18,
sayHi(){
console.log(this)
}
}
obj.sayHi()
3.构造函数 this的指向是,创建出来的实例
function obj(name,age){
this.name=name;
this.age=age;
console.log('名字是:'+this.name+',age是'+this.age);
}
var fn=obj('lxf',18)
4.apply和call this的指向是,方法后的第一个参数
var obj1={
name:'小花',
age:18,
sayHi(){
console.log(this)
}
}
var obj2={
name:'小明',
age:19,
sayHi(){
console.log(this)
}
}
obj1.sayHi()
obj1.sayHi.call(obj2)
obj2.sayHi.apply(obj1)
5.箭头函数 他的this的指向是,上一层作用域中的this
var obj={
name:'小花',
age:18,
sayHi(){
setTimeout(()=>{
console.log(this)
},0)
setTimeout(function(){
console.log(this)
},0)
}
}
obj.sayHi()
拓展知识:let声明的对象,不在window中,在script标签包裹的作用域中
let username='刘亦菲'
var age=18
function sayHi(){
console.log(this.username)
console.log(this.age)
}
sayHi();