this是js中的关键字,它遵循的规则是:谁调用,指向谁
哪个对象调用函数,函数里面的this指向哪个对象。
var a = 1
function test () {
console.log(this.a)
}
test()
直接不带任何引用形式去调用函数,则this会指向全局对象,因为没有其他影响去改变this,this默认就是指向全局对象的。这个结论是在非严格模式的情况下,严格模式下这个this其实是undefined的。
var a = 1
function test () {
console.log(this.a)
}
var obj = {
a: 2,
test
}
obj.test()
obj调用了test,所以this的指向就是obj。
var a = 1
function test () {
console.log(this.a)
}
var obj = {
a: 2,
test
}
var obj0 = {
a: 3,
obj
}
obj0.obj.test()
即使多层嵌套,this的指向也只返回它的上一级,即obj,而不是返回obj0;
var a = 1
function test () {
console.log(this.a)
}
var obj = {
a: 2,
test
}
var testCopy = obj.test
testCopy()
即使在obj.test中,this的指向依然还是obj
但是,声明了变量testCopy后,再调用testCopy,此时它的指向就是window。
var a = 1
var test = () => {
console.log(this.a)
}
var obj = {
a: 2,
test
}
obj.test()
“函数被调用时(即运行时)才会确定该函数内this的指向。”现在函数这两个字要加个词修饰一下,变成普通函数(非箭头函数)才能区别于箭头函数。箭头函数中的this在函数定义的时候就已经确定,它this指向的是它的外层作用域this的指向。
网友评论