很多代码优化及公司规范都会提到
写对象不应该
var obj = new Object()
而应该
var obj = {}
写数组不应该
var arr = new Array()
而应该
var arr = []
很多书籍《JavaScript高级程序设计》《JavaScript权威指南》也建议使用对象、数组直接量而别使用new方式。这里就引出了直接量(Literals)的概念。
ES1(1997.6)规定的直接量有四种:Null、Boolean、Numeric、String
ES2(1998.8)规定的直接量和ES1相同
到了ES3(1999.12),则加入了正则表达式直接量(Regular Expression Literals),有5种直接量
以上规范可以看到,ES1到ES5中都没有将对象,数组纳入直接量的概念中。那为什么很多书籍都使用“对象直接量”、“数组直接量”呢?
实际在ES3,ES5中,对象和数组被归纳到第十一章(表达式)里,有一个新名词称为 初始器(Initialiser)。
ES3
ES5
为何ES3中将正则对象纳入了直接量,数组和对象怎么没有呢?
var reg = /abc/g var arr = [1, 2, 3] var obj = {name: 'John McCarthy'}
以上代码让我们很自然的认为,数组/对象应该和正则一样纳入直接量的概念里。再看下面的代码
var arr = [obj.a, 0, obj.a+1] var obj = {name: 'John' + 'McCarthy'}
可以看到“obj.a”、“obj.a+1” 等都是表达式运算,故而从ES3开始把数组、对象纳入在11章表达式(Exrpessions)里,称为初始器(Initialiser)。
正则表达式里则不会出现表达式运算,因此放在第7章直接量(Literals)里。
由于初始器(Initialiser)的称呼晚于一些书籍的出版,《JavaScript权威指南》后续版本如第六版仍然采用 “对象直接量”,“数组直接量” 这样的名词。
最后提一下Undefined,不知ES规范为什么没把Undefined纳入到直接量(Literals)的概念里。
相关:
相关推荐
2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可变的原始值和可变的...
2.3 直接量27 2.4 标识符和保留字28 2.5 可选的分号30 第3章 类型、值和变量32 3.1 数字34 3.2 文本38 3.3 布尔值43 3.4 null和undefined44 3.5 全局对象45 3.6 包装对象46 3.7 不可变的原始...
2.3 直接量 2.4 标识符和保留字 2.5 可选的分号 第3章 类型、值和变量 3.1 数字 3.2 文本 3.3 布尔值 3.4 null和undefined 3.5 全局对象 3.6 包装对象 3.7 不可变的原始值和可变的对象引用 3.8 类型转换 3.9 变量...
2.3 直接量 2.4 标识符和保留字 2.5 可选的分号 第3章 类型、值和变量 3.1 数字 3.2 文本 3.3 布尔值 3.4 null和undefined 3.5 全局对象 3.6 包装对象 3.7 不可变的原始值和可变的对象引用 3.8 类型转换 3.9 变量...
2.3 直接量27 2.4 标识符和保留字28 2.5 可选的分号30 第3章 类型、值和变量32 3.1 数字34 3.2 文本38 3.3 布尔值43 3.4 null和undefined44 3.5 全局对象45 3.6 包装对象46 3.7 不可变的原始...
2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可...
2.3 直接量 2.4 标识符和保留字 2.5 可选的分号 第3章 类型、值和变量 3.1 数字 3.2 文本 3.3 布尔值 3.4 null和undefined 3.5 全局对象 3.6 包装对象 3.7 不可变的原始值和可变的对象引用 3.8 类型转换 3.9 变量...
2.3 直接量27 2.4 标识符和保留字28 2.5 可选的分号30 第3章 类型、值和变量32 3.1 数字34 3.2 文本38 3.3 布尔值43 3.4 null和undefined44 3.5 全局对象45 3.6 包装对象46 3.7 不可变的原始...
2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可...
2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可变的原始值和可变的...
2.3 直接量 2.4 标识符和保留字 2.5 可选的分号 第3章 类型、值和变量 3.1 数字 3.2 文本 3.3 布尔值 3.4 null和undefined 3.5 全局对象 3.6 包装对象 3.7 不可变的原始值和可变的对象引用 3.8 类型转换 3.9 变量...
在JavaScript中,数组可以使用正式的对象表示法来创建,或者可以使用直接量表示法来初始化。 代码如下: var arrObject = new Array(“val1”, “val2”); // 作为对象的数组 var arrLiteral = [“val1”, “val2”]...
2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可变的原始值和可变的...
老在眼前晃,于是在网上搜吧,查... 对象直接量(也称为对象初始化程序)是由一个列表构成的,这个列表的元素是用冒号分隔的属性/值对,元素之间用逗号隔开了,整个列表包含在花括号之中。 javascript中的对象可以像
使用AJAX技术,就可以使Javascript通过XMLHttpRequest对象直接与器进行交互。 PHP培训教程之AJAX技术全文共3页,当前为第1页。 通过HTTPRequest,一个web页面可以一个请求到web器并且接受web器返回的信息(不用重新...
正则表达式直接量则与此不同,ECMAScript 3规范规定,一个正则表达式直接量会在执行到它时转换为一个RegExp对象,同一段代码所表示正则表达式直接量的每次运算都返回同一个对象。ECMAScript 5规范则做了相反的规定,...
直接在线体验或者下载整个文件,然后双击index. htm在浏览器中运行。注意目前还需网络。 注意 1 由于目前我还无法完成加载动画的正确添加(不管我如何添加加载动画,它都会计算完成后再显示加载动画,这违背的加载动画...