
正文
this的思考
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
问题:JS中为什么要用this?
回答: 因为this采用隐式“传递”一个对象的引用,所以可以将API设计得更加简洁和可复用
问题:JS中的this是什么?
背景: this是在运行时绑定的,this的上下文取决于函数调用的各种条件,又取决于函数的调用方式
本质: 当一个函数被调用时,会创建一个活动记录(也称为执行上下文)。
这个活动记录会包含有这个函数在哪里被调用(调用栈)、这个函数的调用方式、传入的参数等信息。
this就是这个活动记录的一个属性,会在这个函数执行的过程中用到。
问题:JS中如何判断一个运行中函数的this绑定?
前提:
首先我们要找到这个函数的直接调用位置
分析:
-
情况:由new调用?
判断:绑定到新创建的对象
-
情况:由call或者apply(或者bind)调用?
判断:绑定到指定的对象
-
情况:由上下文对象调用?
判断:绑定到上下文对象
-
情况:默认情况?
判断:绑定到全局对象
-
情况:严格模式下的默认情况?
判断:绑定到undefined
-
情况:ES6中的箭头函数
判断:根据当前的词法作用域来决定this







