Javascript之this
this描述:
mdn上定义:函数的调用方式决定了 this 的值(运行时绑定)。this 不能在执行期间被赋值,并且在每次函数被调用时 this 的值也可能会不同.
个人认为this是要结合上下文的时候判断他的指向,在全局执行环境中,this指向的是window.
在函数中,this指向看’.'前面的对象是谁就指向谁
`下面通过代码来看this的指向`
在全局环境
// An highlighted block
var name = "su"
var person = {
name: "xuan",
getMethod() {
return function () {
console.log(this.name)
}
},
}
person.getMethod()()
//这里会输出全局变量su,因为person.getMethod()返回的是一个函数,函数在全局环境中调用,this则指向的window,所以直接找到name = 'su'
以对象的方法调用
var yourName = "su"
var per = {
yourName: "xuan",
getName() {
var _this = this
return function () {
console.log(_this.yourName)
}
},
}
per.getName()()
//会输出xuan,因为在getName中把他的this的指向用一个变量存储起来,所以调用内部函数this指向的是per,拿到他的变量
//这里因为内部的匿名函数会引用到getName函数的变量_this,此处也会产生闭包
关于箭头函数
箭头函数的this指向的是在定义箭头函数时他所在的对象
也是通过代码演示
var myName = "su"
var people = {
myName: "xuan",
sayHi() {
return (_) => {
console.log(this.myName)
}
},
}
people.sayHi()()//xuan
//因为箭头函数在创建时定义在了people里面,所以他的this指向的是people,输出自然为xuan