如果用 D3 来构建一个简单的散点图,我们需要创建一些圆点(circle)来展示你的数据。当你发现 D3 并没有提供内置的方法来同时创建多个 DOM 元素时,也许你会感到惊讶,但是,等等,为什么呢?
ECMA-262-3 详解 第八章 求值策略
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 8. Evaluation strategy.
概述
本文将讨论在 ECMAScript 中向函数传递参数的策略。
计算机科学里对这种策略一般称为“evaluation strategy”,即在编程语言中求解或计算某些表达式的值的一系列规则。将参数传递给函数是其中的一个案例。
写这篇文章的原因是因为论坛上有一些类似的讨论,大家都呼吁给出 ECMAScript 中参数传递策略的最精确的说明。本文给出了相应的定义,希望对大家有所帮助。
很多程序员都确信在 JavaScript 中(甚至其它一些语言),对象是按引用传参,而原始值类型按值传参,此外,很多文章和书籍都说到这个“事实”,但有多人真正理解这个术语,而且又有多少是正确的?我们本篇讲逐一讲解。
ECMA-262-3 详解 第七章 面向对象(二):ECMAScript 实现
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 7.2. OOP: ECMAScript implementation.
概述
这一章的第二部分是关于 EMCAScript 中的面向对象编程。在第一部分中我们讨论了 OOP 的基本理论并勾画出和 ECMAScript 的相似之处。在阅读第二部分之前,如果有必要,我还是建议首先阅读这一章的第一部分 概论,因为后面将会用到其中的一些术语。
ECMA-262-3 详解 第七章 面向对象(一):概论
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 7.1. OOP: The general theory.
概述
本文主要讨论 ECMAScript 中面向对象编程。之前已经有大量的文章讨论过该话题了,但本文与那些文章不同,本文主要从理论方面来解析其内部原理。重点讨论对象创建算法,对象之间的关系(包含最基本的关系 – 继承)是如何形成的,并给出了明确的定义(我希望这可以消除一些文章中对于 JavaScript 中 OOP 的疑虑和混乱)。
ECMA-262-3 详解 第六章 闭包
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 6. Closures.
概述
本文将介绍在 JavaScript 中大家经常讨论的话题 – 闭包(Closure)。事实上,闭包是个老生常谈的话题了,管如此,这里还是要试着从理论角度来讨论下闭包,看看 ECMAScript 中的闭包内部究竟是如何工作的。
正如在此前文章中提到的,这些文章都是系列文章,相互之间都是有关联的。因此,为了更好的理解本文要介绍的内容, 建议先去阅读下第四章 作用域链和第二章 变量对象。
ECMA-262-3 详解 第五章 函数
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 5. Functions.
概述
本文将介绍 ECMAScript 中一个非常常见的对象 – 函数。我们将着重介绍函数都有哪些类型,不同类型的函数是如何影响上下文的变量对象的,以及每种类型的函数的作用域链中都包含什么,并回答诸如下面这样的问题:下面声明的函数有什么区别吗?(如果有,区别是什么)。
|
|
上述方式创建的函数和如下方式创建的有什么不同?
|
|
下面代码为什么要用一个括号包起来呢?
|
|
本文和此前几篇文章都是有关联的,因此,要想完全搞懂这部分内容,建议先去阅读第二章 变量对象以及第四章 作用域链。
下面,我们首先来看一下函数类型。
ECMA-262-3 详解 第四章 作用域链
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 4. Scope chain.
概述
通过第二章 变量对象的学习我们知道,执行上下文的数据(变量、函数声明、函数形参)都是以属性的方式储存在变量对象中。
我们还知道,变量对象是在进入执行上下文阶段被创建和初始化,随后在执行代码阶段会对属性值进行更新。
本文将深入讨论与执行上下文密切相关的另外一个重要的概念 —— 作用域链(Scope Chain)。
ECMA-262-3 详解 第三章 This
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 3. This.
翻译过程参考了现有的中文翻译,学习 ECMAScript 是一个非常抽象的过程,因为很多概念都是通过抽象的方式来解释的,作者尝试尽量用一些简单的方式并使用了一些具体图表,来使我们的学习曲线稍微平稳一点。
概述
本文将讨论和执行上下文密切相关的更多细节 - this
关键字。
实践证明,这个主题很难,在不同的执行上下文中确定 this
的值经常会发生问题。
许多程序员习惯性地讲 this
和面向对象编程密切联系在一起,this
指向了构造函数中新创建的对象。在 ECMAScript 中,这样说也没问题,但就像我们即将看到的那样,this
不限于用来指向新创建的对象。
接下来给大家揭开在 ECMAScript 中 this
神秘的面纱。
ECMA-262-3 详解 第二章 变量对象
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 2. Variable object.
参考了一些译文,作为自己学习 ECMAScript 的一点积累。
概要
创建应用程序的时,总免不了要声明变量和函数。然而,解析器(interpreter)是如何以及从哪里找到这些数据(变量,函数)的,当我们引用一个变量时,在解析器内部又发生了什么?
许多 ECMAScript 程序员都知道变量与执行上下文密切相关:
|
|
同样,许多 ECMAScript 程序员也知道,基于当前版本的规范,独立作用域只能通过“函数代码”才能创建。也就是说,与 C/C++ 不同,在 ECMAScript 中 for
循环不会创建一个局部上下文(即局部作用域)。
|
|
下面具体来看一下,当我们声明变量和函数时,究竟发生了什么。
ECMA-262-3 详解 第一章 执行上下文
本文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 1. Execution Contexts.
参阅了已有的中文翻译,以此来加深对 ECMAScript 的理解。
概要
本文将介绍 ECMAScript 的执行上下文以及与之相关的可执行代码的类型。
定义
每当控制器到达 ECMAScript 的可执行代码时,控制器就进入了一个执行上下文。
执行上下文(简称 - EC)是 ECMA-262 中的一个抽象概念,用于区别不同类型的可执行代码。
规范中并没有从技术角度来定义执行上下文的具体结构和类型,这是实现标准 ECMAScript 引擎所需要考虑的问题。
一系列活动执行上下文在逻辑上形成一个栈。栈底永远是全局上下文,而栈顶是当前(活动)执行上下文。栈在进入或退出各种执行上下文(EC)时被修改(入栈/出栈)。