string 和串连接实现机制的一些要点

主要参考文档还是 ECMAScript 语言规范,不过在此不引用相关内容了,太麻烦。仅列出几个要点,读者请自行考察验证。

  1. 字面量 不以对象实现,作为 16 位无符号整数存储,当局称这么做的目的是为了“简单高效”。
  2. “+”运算符的所谓“重载”,其实只是同一个算法内部的不同分支。
  3. “+”运算符进入“串连接”操作的分支后,调用左运算元(转换成 对象后)的 Concatenate 方法,这意味着返回的是对象(运算元均为数字时,将调用另外的方法,不返回对象)。
  4. “+”运算符的算法实现是比较复杂的,要多次调用内部的类型转换方法与串连接操作,所以效率低。
  5. JS 中 的实现与“+”操作的机制与 Java 是很不一样的,虽然我不知在哪本书上看见作者声称它们与 Java 中的实现没什么不同,纯属误人子弟。

Execution Contexts 机制深剖(3)

进入执行上下文

每调用一个函数或构造器就会进入一个新的上下文,即使函数在递归调用。函数返回,则离开一个上下文。如果发生了一个异常且没有被捕获,那么也可能离开一个或多个上下文。

当执行流进入一个上下文,作用域链便生成,同时完成初始化,动态实例化被执行, 也被确定。

以上创建或初始化过程取决于正在进入的可执行代码的类型。 阅读全文

Execution Contexts 机制深剖(2)

作用域链和标识符解析

每一个执行上下文都有一个与之关联的作用域链。作用域链其实是一个记录了一组当解析标识符时需要检索的对象的列表。当进入一个上下文时,一条作用域链即创建,并且附带了一组初始化的对象,具体是什么对象这和可执行代码的种类有关。在一个上下文的执行期间,作用域链仅受 with 和 catch 语句的影响。 阅读全文

Execution Contexts 机制深剖(1)

规范的一个重要部分,执行上下文。本系列不过就是把规范上的这一章翻译下来,然后分篇发布。总的看来,这一章的内容在整篇规范中属于那种说得云里雾里的,因此翻译的问题肯定很严重,回头再修正。

废话不多说,直接上正文:

执行上下文

当 ECMAScript 可执行代码获得了执行权,则意味着执行流正在进入一个所谓的执行上下文。被激活的上下文逻辑地组成了一个上下文栈。处于栈顶的上下文是当前运行中的执行上下文。 阅读全文

Attribute or Property

Attribute 和 Property 这两个术语大家不会陌生,它们也是 OO 中的基本概念。翻译成中文呢?不好办,都叫做“属性”;区别又在哪里?……不清楚——这是相当一部分同学对这对貌合神离的术语的认识。

本来呢,我也没打算追根究底把这对家伙拎清楚,因为在实践中它们区别不大,都当做“属性”来用就可以了。然而,近日在读规范的时候,发现这对术语出现在了同一句句子中!这回没办法回避了,何况我还要对那部分规范做具体的翻译。于是查资料,找到一篇不错的文章,里面也直接引用了相关规范的定义,比较可信,我便直接转来了。

注意:以下内容均为转帖,本人仅对其做一些格式化工作,并未对任何内容进行改写。原文在这里阅读全文

分类“裙带技术”——序

网站建立之初,各分类均以一《序》作为开篇,同时充当目录占位符。

本博专注于 Web 前端技术,然而 IT 相关技术都是不分家的,有时必然要牵扯到其他一些裙带技术,那些篇目便通通仍在此处。