this通常用于指向当前对象。this的_职场新人进化论
this通常用于指向当前对象。
this的值在函数被调用时是被动态计算的,它的值取决于函数的调用方式。
this的值可以分为以下4种情况:
默认绑定:如果一个函数不是作为对象的方法被调用时,那么它的this指向是全局对象,在浏览器中就是window对象,在node.js中就是global对象;
隐式绑定:如果一个函数作为对象方法被调用时,那么它的this指向就是该对象;
显示绑定:如果一个函数使用了apply()或者call()方法被调用,那么它的this值被显示绑定为函数调用时所传递的第一个参数。
new绑定:如果一个函数通过new关键字调用,那么它的this指向值是一个新创建的对象。
注意:如果一个函数同时满足多种绑定规则,那么优先级从高到低依次是new绑定-显示绑定-隐式绑定-默认绑定。
例:this的应用
let name = 'window'
function Person(name) {
this.name = name
}
Person.prototype.sayName = function () {
console.log(this.name)
}
let p1 = new Person('p1')
p1.sayName() // 输出 "p1"
let p2 = {
name: 'p2',
sayName: function () {
console.log(this.name)
},
}
p2.sayName() // 输出 "p2"
「前端面试题」简述一下JavaScript中的this关键字