《JavaScript启示录》——导读

简介: 本书的撰写意图是通过考察原生JavaScript对象和不同环境对原生对象的支持的细微差别,来给读者展现准确的JavaScript世界观:复杂值、原始值、作用域、继承、head对象等。


screenshot


**
前言
**
本书无关于JavaScript设计模式,也无关于JavaScript面向对象代码实现。本书的写作目的也不是鉴别JavaScript语言特点的好坏。本书并不是一本完整的参考指南。它面向的读者人群并不是编程新手或对JavaScript完全陌生的人员。同时,它也不是一本JavaScript攻略手册。关于上述这些方面的书籍都已经面世。

本书的撰写意图是通过考察原生JavaScript对象和不同环境对原生对象的支持的细微差别,来给读者展现准确的JavaScript世界观:复杂值、原始值、作用域、继承、head对象等。我希望本书是关于ECMAScript第三版规范的简单易懂的总结,重点介绍JavaScript中对象的特性。

如果你是只使用过JavaScript库(如jQuery、MooTools、Zepto、YUI、Dojo等)的设计师或开发人员,我希望本书中的资料能够使你从JavaScript库用户转变成为JavaScript开发人员。

目录

**[第1章 JavaScript对象
1.1 创建对象](https://yq.aliyun.com/articles/96270)**
1.2 JavaScript构造函数构建并返回对象实例
1.3 JavaScript原生/内置对象构造函数
1.4 用户自定义/非原生对象构造函数
1.5 使用new操作符实例化构造函数
1.6 从构造函数创建字面量值
1.7 原始值(或简单值)
1.8 null、undefined、"string"、10、true和false等原始值不是对象
1.9 如何存储和复制原始值
1.10 原始值比较采用值比较
1.11 原始值(String、Number、Boolean)在被用做对象时就像对象
1.12 复杂值(或组合值)
1.13 如何存储或复制复杂值
1.14 复杂对象比较采用引用比较
1.15 复杂对象具有动态属性
1.16 typeof操作符
1.17 动态属性支持易变对象
1.18 构造函数实例都拥有指向其构造函数的Constructor属性
1.19 验证对象是否是特定构造函数的实例
1.20 构造函数创建的实例可拥有自己独立的属性(实例属性)
1.21 JavaScript对象和Object()对象

相关文章
|
JavaScript 前端开发 容器
《JavaScript启示录》——1.21 JavaScript对象和Object()对象
不要将一般术语“JavaScript对象”与Object()对象混淆。前者指的是JavaScript中对象的概念。Object()对象(如var myObject = new Object())是JavaScript中表示的一个非常特殊的值。
1473 0
|
前端开发 JavaScript
《JavaScript启示录》——1.20 构造函数创建的实例可拥有自己独立的属性(实例属性)
在JavaScript中,对象在任何时候都可以扩展(即动态属性)。正如前面提到的,确切地说,JavaScript拥有易变对象(mutable object)。这意味着通过构造函数创建的对象可以扩展属性。
1118 0
|
JavaScript 前端开发
《JavaScript启示录》——1.19 验证对象是否是特定构造函数的实例
原始值使用对象包装器,判断实例时(如 'foo' instanceof String //返回false),instanceof操作符将返回false。如果使用new操作符创建字符串 'foo',instanceof操作符会返回true。
1184 0
|
JavaScript 前端开发
《JavaScript启示录》——1.18 构造函数实例都拥有指向其构造函数的Constructor属性
任何对象实例化时,都是在幕后将constructor属性创建为对象/实例的属性。这是指创建对象的构造函数。下面创建一个Object()对象,保存在变量foo中,然后验证constructor属性在创建的对象中是否可用。
1360 0
|
JavaScript 前端开发 存储
《JavaScript启示录》——1.17 动态属性支持易变对象
复杂对象是由动态属性构成的。这使得用户自定义对象和大多数原生对象可以产生突变。这意味着JavaScript中的大多数对象都可以随时更新或更改。正因为如此,可以通过增加原生对象,来改变JavaScript本身的原生预配置特性。
1561 0
|
JavaScript 前端开发
《JavaScript启示录》——1.16 typeof操作符
typeof操作符用于返回正在使用值的类型。但它返回的值并不一致,或者说,逻辑上不一致。下面的代码展示了使用typeof操作符所返回的值。
1267 0
|
前端开发 JavaScript
《JavaScript启示录》——1.15 复杂对象具有动态属性
一个新变量,指向现有的复杂对象,并没有复制该对象。这就是复杂对象有时被称为引用对象的原因。复杂对象可以根据需求有任意多个引用,即使对象改变,它们也总是指向同一个对象。
1192 0
|
JavaScript 前端开发
《JavaScript启示录》——1.14 复杂对象比较采用引用比较
复杂对象只有在引用相同的对象(即有相同的地址)时才相等。包含相同对象的两个变量彼此不相等,因为它们并不指向同一个对象。
1477 0
|
存储 JavaScript 前端开发
《JavaScript启示录》——1.13 如何存储或复制复杂值
复杂值是通过引用进行存储和操作的,理解这一点相当重要。创建一个包含复杂对象的变量时,其值是内存中的一个引用地址。引用一个复杂对象时,使用它的名称(即变量或对象属性)通过内存中的引用地址获取该对象值。当考虑试图复制一个复杂值时会发生什么事的时候,这就非常重要了。
1216 0
|
JavaScript 前端开发
《JavaScript启示录》——1.12 复杂值(或组合值)
原生对象构造函数Object()、Array()、Function()、Date()、Error()和RegExp()是复杂类型,因为它们可以包含一个或多个原始值或复杂值。本质上,复杂值可以由很多不同类型的JavaScript对象组成。
1340 0