I JavaScript 高级用法
1/2

I 原型相关
I.I prototype
prototypeI.II __proto__
__proto____proto__ 指向原型对象的prototype
总结⬆️:
原型对象的
prototype=== 示例对象的__proto__实例对象的
constructor/__proto__.constructor指向 原型对象
II 作用域相关
II.I 词法作用域 -- 定义 时确定
II.II 动态作用域 -- 运行时确定
II.III 执行上下文
II.IV 执行上下文栈
II.V 变量对象?????
JavaScript 执行代码会创建执行上下文。 其包含如下三个属性:
变量对象(上下文相关联的作用域)
作用域链
this
变量对象 是与执行上下文相关的数据作用域,存储上下文中定义的变量和函数声明。
变量对象 又可细分为如下两点。
II.VI 全局上下文变量
全局对象,window / global
II.VII 函数上下文变量
activation object -- AO 活动对象。
个人理解: 活动对象是变量对象的可访问的版本。
TIPS: 变量对象是规范或引擎上实现的,是不能在
JavaScript环境中访问的。只有进入执行上下文,这个执行上下文中的变量对象才会被激活并可以被访问使用,而被激活后的变量对象也就称之为 活动对象 --AO
II.VII this
thisthis获取步骤:
将
MemberExpression计算结果赋值给ref判断
ref是否是一个Referenceref是一个ReferenceIsPropertyReference(ref)结果为true时,this即为GetBase(ref)否则判断
base value值是否为Environment Record是则为ImplicitThisValue(ref)
ref不是一个Referencethis值为undefined
看到这里发现有这些未知的名词
MemberExpression这里就简单理解()左边的部分吧。ReferenceGetBasebase valueEnvironment RecordImplicitThisValue
闭包
指能够访问自由变量的函数。
自由变量 指在函数中使用,但不是函数参数,也不是函数局部变量的一种变量。
TIPS 💡
最后更新于
这有帮助吗?