原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es5.htmljavascript
本文將簡單列舉ES5的核心特性。ES5多半是擴展原生對象的功能,讓Object
、Array
、Function
更增強大。其餘的特性包括strict mode
和一下期待已久的工具方法(例如JSON.parse
等)。java
ES5的大部分特性1都在主流瀏覽器(IE9+)中支持了。並且大部分特性,均可以經過Javascript墊片(pollyfill)在運行時環境實現2。git
全部對象操做中,若是o
不是Object
類型,將會拋出TypeError
異常。github
獲取給丁對象的prototype
對象。等價於之前的o.__proto__
。數組
獲取對象描述。和Object.defineProperty
的相關方法。瀏覽器
獲取自有屬性名列表。結果列表將不包含原型鏈上的屬性。編輯器
以給丁對象o
爲prototype
建立新的對象並返回。若是對象描述p
存在,就使用其定義剛建立的對象(相似調用Object.defineProperties(obj,p)
)。函數
根據規則attrs
定義對象o
上,屬性名爲p
的屬性工具
根據對象描述props
來定義對象o
,一般props
包含多個屬性的定義。
一個對象在默認狀態下,
Object.seal
會改變這兩個特性,既不能擴展新屬性,也不能修改已有屬性的特性。
將對象的每一個自有自有屬性(own property)作以下操做:
writable
特性置爲false
configurable
特性置爲false
同時,該對象將不可擴展。可見,該方法比Object.seal
更加嚴格的限制了對一個對象的將來改動。
將對象置爲不可擴展。
判斷一個對象是否sealed
:
configurable
特性爲true
,則返回false
extensible
的,那麼返回false
true
configurable
或writable
特性爲true
,則返回false
extensible
的,那麼返回false
true
判對一個對象是否可擴展。
返回對象o
的全部可枚舉(enumerable
)屬性的名稱。
檢查對象是不是位於給定對象v
的原型鏈上。
檢查一個對象上的屬性p
是否可枚舉。
判斷a
是否爲爲真正的Array
。
使用「嚴格等」來判斷元素e
在數組中的索引號。一個可選的搜索起點i
。
獲取元素e
在數組中最後出現的位置。起始位置i
爲可選。
測試數組中的每一個元素都知足測試t
。以後介紹的全部數組遍歷方法,都支持一個可選的上下文對象c
,能夠靈活設置回調函數的執行上下文。傳遞給數組的測試函數、遍歷函數一般有以下簽名:
function(item, index, array) {}
測試數組中是否有元素知足測試t
。
使用函數f
遍歷每一個數組的元素。
使用函數f
修改每一個數組的每一個元素。按順序收集f
的每一個返回值,並返回這個新組成的數組。
收集經過函數測試f
的書組元素。
從左向右,使用函數r
彙集數組的每一個元素。能夠可選的制定一個初始值v
。
Array.prototype.reduce
的從右向左的版本。
去掉字符串兩頭的空白符和換行符。
//property access on strings "abc"[2] === "b"
爲了指定當前函數的上下文對象和運行參數,該函數建立一個新的函數,保留給定的this
對象和運行參數。
根據rfc462722標準解析JSON文本。
將指定的對象obj
序列化爲JSON文本。
獲取當前時間距1970.1.1 00:00:00
的毫秒數。
根據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 ↩