原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es5.html
- 本文需要补充更多例子
- 本文存在批注,但该网站的Markdown编辑器不支持,所以无法正常展示,请到原文参考。
ES5特性
本文将简单列举ES5的核心特性。ES5多半是扩展原生对象的功能,让Object
、Array
、Function
更加强大。其他的特性包括strict mode
和一下期待已久的工具方法(例如JSON.parse
等)。
ES5的大部分特性1都在主流浏览器(IE9+)中支持了。而且大部分特性,都可以通过Javascript垫片(pollyfill)在运行时环境实现2。
Object
所有对象操作中,如果o
不是Object
类型,将会抛出TypeError
异常。
Object.getPrototypeOf(o)3
获取给丁对象的prototype
对象。等价于以前的o.__proto__
。
Object.getOwnPropertyDescriptor(o,p)4
获取对象描述。和Object.defineProperty
的相关方法。
Object.getOwnPropertyNames(o)5
获取自有属性名列表。结果列表将不包含原型链上的属性。
Object.create(o,p)6
以给丁对象o
为prototype
创建新的对象并返回。如果对象描述p
存在,就使用其定义刚创建的对象(类似调用Object.defineProperties(obj,p)
)。
Object.defineProperty(o,p,attrs)7
根据规则attrs
定义对象o
上,属性名为p
的属性
Object.defineProperties(o,props)8
根据对象描述props
来定义对象o
,通常props
包含多个属性的定义。
Object.seal(o)9
一个对象在默认状态下,
- extensible: 可以添加新的属性
- configurable: 可以修改已有属性的特性
Object.seal
会改变这两个特性,既不能扩展新属性,也不能修改已有属性的特性。
Object.freeze(o)10
将对象的每个自有自有属性(own property)做如下操作:
- 属性的
writable
特性置为false
- 属性的
configurable
特性置为false
同时,该对象将不可扩展。可见,该方法比Object.seal
更加严格的限制了对一个对象的未来改动。
Object.preventExtensions(o)11
将对象置为不可扩展。
Object.isSealed(o)12
判断一个对象是否sealed
:
- 对象的每个自有属性:如果属性的
configurable
特性为true
,则返回false
- 如果对象为
extensible
的,那么返回false
- 不满足以上两个条件,则返回
true
Object.isFrozen(o)13
- 对每个自有属性,如果该属性的
configurable
或writable
特性为true
,则返回false
- 如果对象为
extensible
的,那么返回false
- 不满足以上两个条件,则返回
true
Object.isExtensible(o)14
判对一个对象是否可扩展。
Object.keys(o)15
返回对象o
的所有可枚举(enumerable
)属性的名称。
Object.prototype.isPrototypeOf(v)16
检查对象是否是位于给定对象v
的原型链上。
Object.prototype.propertyIsEnumerable(p)
检查一个对象上的属性p
是否可枚举。
Array
Array.isArray(a)
判断a
是否为为真正的Array
。
Array.prototype.indexOf(e,i)17
使用“严格等”来判断元素e
在数组中的索引号。一个可选的搜索起点i
。
Array.prototype.lastIndexOf(e,i)18
获取元素e
在数组中最后出现的位置。起始位置i
为可选。
Array.prototype.every(t,c)
测试数组中的每个元素都满足测试t
。之后介绍的所有数组遍历方法,都支持一个可选的上下文对象c
,可以灵活设置回调函数的执行上下文。传递给数组的测试函数、遍历函数通常有如下签名:
function(item, index, array) {}
Array.prototype.some(t,c)
测试数组中是否有元素满足测试t
。
Array.prototype.forEach(f,c)
使用函数f
遍历每个数组的元素。
Array.prototype.map(f,c)
使用函数f
修改每个数组的每个元素。按顺序收集f
的每个返回值,并返回这个新组成的数组。
Array.prototype.filter(f,c)
收集通过函数测试f
的书组元素。
Array.prototype.reduce(r,v)19
从左向右,使用函数r
聚集数组的每个元素。可以可选的制定一个初始值v
。
Array.prototype.reduceRight(r,v)20
Array.prototype.reduce
的从右向左的版本。
String
String.prototpye.trim
去掉字符串两头的空白符和换行符。
字符订阅
//property access on strings
"abc"[2] === "b"
Function
Function.prototype.bind(thisTarget, arg1,...argn)21
为了指定当前函数的上下文对象和运行参数,该函数创建一个新的函数,保留给定的this
对象和运行参数。
JSON
JSON.parse(text)
根据rfc462722标准解析JSON文本。
JSON.stringify(obj)
将指定的对象obj
序列化为JSON文本。
Date
Date.now
获取当前时间距1970.1.1 00:00:00
的毫秒数。
Date.prototype.toISOString
根据ISO860123生成时间字符串。
(new Date).toISOString()
'2014-04-02T08:31:53.049Z'
其他特性
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperties ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/seal ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/preventExtensions ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isSealed ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isFrozen ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isExtensible ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isPrototypeOf ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduceRight ↩
-
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind ↩
-
http://stackoverflow.com/questions/8099270/use-of-reserved-words-in-javascript ↩
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。