一、前端this
- 普通函数的调用指向全局对象
var x = 5
function test(){
var x = 1
console.log(this.x)
}
test()
window.test()
console.log('--------------------------')
- 作为对象方法调用,this指向上级对象
var x =5;
function test2(){
console.log(this.x)
}
var obj = {}
obj.x = 2
obj.f = test2
obj.f()
obj = {
x :2,
f() {
var that = this;
function demo (){
console.log(this.x)
console.log(that.x)
}
demo()
}
}
obj.f()
console.log('--------------------------')
- 作为构造函数 this指代new 出来的对象
function test3(){
this.x =3
this.y =5
}
var myObj = new test3()
console.log(myObj.x)
function test4(){
this.my = 5
}
var myObj2 = new test4()
console.log(window.myObj2.my)
console.log('--------------------------')
- apply call bind 调用指代其绑定的镀锡 第一个参数,第一个参数不写默认为window
var o = 66
function func(){
console.log(this.o)
}
var obj3 = {}
obj3.o = 6
obj3.f = func
obj3.f()
obj3.f.apply()
obj3.f.apply(window)
obj3.f.apply(obj3)
function CLassName() {
}