this指向
严格模式下:this指向undefined(自调用||自执行)
非严格模式下:this指向window
什么是严格模式?
"use strict"
在全局模式下写,整个js文件都是严格模式,
在函数内部写,当前函数就是严格模式的。
注意:严格模式和非严格模式,在语法上有一点区别
局部函数下 函数内部
1.元素触发事件时,this指向是当前触发事件的元素
记住:谁调用的函数,this就执行谁
call和apply函数的区别
call参数要一个个的传递进去。
apply可以吧多个参数写在数组里面的每一个元素,而不是整个数组
严格模式下:this指向undefined(自调用||自执行)
非严格模式下:this指向window
什么是严格模式?
"use strict"
在全局模式下写,整个js文件都是严格模式,
在函数内部写,当前函数就是严格模式的。
注意:严格模式和非严格模式,在语法上有一点区别
局部函数下 函数内部
1.元素触发事件时,this指向是当前触发事件的元素
btn.onclick = function(){
console.log(this)//btn
}
2.对象调用方法时,this指向这个对象(谁调用函数,这个函数就指向谁)
var name="aa";
var dog={
name : "taidi"
jump : function(){
console.log(this.name)
}
}
dog.jump()//taidi
3.函数自己执行时,this指向的是window
function foo(){
console.log(this)
}
foo()//window
4.回调函数(定是函数,map,forEach函数等),this指向的是window
var people={
eat : function(){
setInterval(function(){
console.log(this)
})
}
}
people.eat()//window
5. 可以使用call, apply函数改变,,this指向对象
call apply 修改了执行函数
call==>
function tell_call(){
console.log(this)
}
var cat={
name : "波斯猫"
}
test_call.call(cat)//{name : "波斯猫"}
test_call.call(0)//number 0
apply==>
function test_apply(){
console.log(arguments)
console.log(this)
}
test_apply.apply(cat,[1,2,3,4])
apply函数可以把参数放在一个数组中传递进去
记住:谁调用的函数,this就执行谁
call和apply函数的区别
call参数要一个个的传递进去。
apply可以吧多个参数写在数组里面的每一个元素,而不是整个数组