数字马力前端开发面试题及参考答案(下)
请解释 this 的定义及相关绑定规则
this 是 JavaScript 中的一个关键字,它指向当前执行上下文的一个对象,其具体指向在函数定义时无法确定,只能在函数执行时根据执行环境动态确定。this 的指向直接影响函数内部对对象属性和方法的访问,理解 this 的绑定规则是掌握 JavaScript 的重要基础。
this 的绑定规则主要有以下几种:
-
默认绑定:当函数独立调用时,即不通过任何对象调用,非严格模式下 this 指向全局对象(浏览器中是 window,Node.js 中是 global);严格模式下 this 指向 undefined。例如,函数 fn () { console.log (this); } 直接调用 fn () 时,非严格模式下输出 window,严格模式下输出 undefined。
-
隐式绑定:当函数通过对象调用时,即函数作为对象的方法被调用,this 指向该调用对象。例如,const obj = {name: 'test', fn: function () { console.log (this.name); } }; obj.fn () 中,this 指向 obj,会输出 'test'。若存在链式调用,this 指向最后一个调用它的对象,如 obj1.obj2.fn () 中,this 指向 obj2。
-
显式绑定:通过 call、apply、bind 方法强制改变函数中 this 的指向。call 和 apply 会立即执行函数,区别在于参数传递方式,call 接收多个参数列表,apply 接收一个参数数组;bind 会返回一个新函数,不会立即执行,新函数的 this 被永久绑定到指定
