以图明志

JavaScript

[专题] JavaScript变量对象其三:执行上下文的两个阶段

执行上下文代码分成两个阶段来处理
现在我们终于到了本文的核心点了。执行上下文的代码被分成两个基本的阶段来处理:进入执行上下文与执行代码。变量对象的修改变化与这两个阶段紧密相关。这2个阶段的处理是一般行为,和上下文的类型无关(也就是说,在全局上下文和函数上下文中的表现是一样的)。

JavaScript

[专题] JavaScript变量对象其二:VO在不同的执行上下文中

不同执行上下文中的变量对象
对于所有类型的执行上下文来说,变量对象的一些操作(如变量初始化)和行为都是共通的。从这个角度来看,把变量对象作为抽象的基本事物来理解更为容易。同样在函数上下文中也定义和变量对象相关的额外内容。当访问全局对象的属性时通常会忽略掉前缀,这是因为全局对象是不能通过名称直接访问的。

JavaScript

[专题] 执行上下文其四:This指针

任何对象都可以作为上下文的this值
任何对象都可以作为上下文的this值。我想再次澄清对与ECMAScript中,与执行上下文相关的一些描述——特别是this的误解。通常,this 被错误地,描述为变量对象的属性。这个特点很重要,因为和变量不同,this是没有一个类似搜寻变量的过程。当你在代码中使用了this,这个 this的值就直接从执行的上下文中获取了,而不会从作用域链中搜寻。

JavaScript

[专题] 执行上下文其三:闭包 Closures

理论上ECMAScript中所有函数都是闭包
在ECMAScript中,函数是“第一类”对象。这个名词意味着函数可以作为参数被传递给其他函数使用 (在这种情况下,函数被称为“funargs”——“functional arguments”的缩写[译注:这里不知翻译为泛函参数是否恰当])。接收“funargs”的函数被称之为 高阶函数(higher-order functions) ,或者更接近数学概念的话,被称为 运算符(operators) 。

JavaScript

[专题] 执行上下文其二:作用域链 Scope Chains

作用域链的原理和原型链很类似
作用域链的原理和原型链很类似,如果这个变量在自己的作用域中没有,那么它会寻找父级的,直到最顶层。标示符[Identifiers]可以理解为变量名称、函数声明和普通参数。例如,当一个函数在自身函数体内需要引用一个变量,但是这个变量并没有在函数内部声明(或者也不是某个参数名),那么这个变量就可以称为自由变量[free variable]。

JavaScript

[专题] 执行上下文其一:变量对象与活动对象

Variable Object / activation object
变量对象(Variable Object)是一个抽象的概念,不同的上下文中,它表示使用不同的object。例如,在global全局上下文中,变量对象也是全局对象自身[global object]。当函数被调用者激活,这个特殊的活动对象(activation object) 就被创建了。

JavaScript

[专题] JavaScript探秘:可执行的上下文堆栈

执行上下文栈(Execution Context Stack)
在ECMASscript中的代码有三种类型:global, function和eval。每一种代码的执行都需要依赖自身的上下文。当然global的上下文可能涵盖了很多的function和eval的实例。函数的每一次调用,都会进入函数执行中的上下文,并且来计算函数中变量等的值。eval函数的每一次执行,也会进入eval执行中的上下文,判断应该从何处获取变量的值。
1 / 1 首页 < Prev 1 Next > 尾页 页码: