摘要:特性本文將簡(jiǎn)單列舉的核心特性。獲取自有屬性名列表。以給丁對(duì)象為創(chuàng)建新的對(duì)象并返回。將對(duì)象的每個(gè)自有自有屬性做如下操作屬性的特性置為屬性的特性置為同時(shí),該對(duì)象將不可擴(kuò)展。檢查對(duì)象是否是位于給定對(duì)象的原型鏈上。
原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es5.html
源代碼: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/JavaScript_Core/ECMAScript/es5.md
本文需要補(bǔ)充更多例子
本文存在批注,但該網(wǎng)站的Markdown編輯器不支持,所以無(wú)法正常展示,請(qǐng)到原文參考。
ES5特性本文將簡(jiǎn)單列舉ES5的核心特性。ES5多半是擴(kuò)展原生對(duì)象的功能,讓Object、Array、Function更加強(qiáng)大。其他的特性包括strict mode和一下期待已久的工具方法(例如JSON.parse等)。
ES5的大部分特性1都在主流瀏覽器(IE9+)中支持了。而且大部分特性,都可以通過(guò)Javascript墊片(pollyfill)在運(yùn)行時(shí)環(huán)境實(shí)現(xiàn)2。
Object所有對(duì)象操作中,如果o不是Object類(lèi)型,將會(huì)拋出TypeError異常。
Object.getPrototypeOf(o)3獲取給丁對(duì)象的prototype對(duì)象。等價(jià)于以前的o.__proto__。
Object.getOwnPropertyDescriptor(o,p)4獲取對(duì)象描述。和Object.defineProperty的相關(guān)方法。
Object.getOwnPropertyNames(o)5獲取自有屬性名列表。結(jié)果列表將不包含原型鏈上的屬性。
Object.create(o,p)6以給丁對(duì)象o為prototype創(chuàng)建新的對(duì)象并返回。如果對(duì)象描述p存在,就使用其定義剛創(chuàng)建的對(duì)象(類(lèi)似調(diào)用Object.defineProperties(obj,p))。
Object.defineProperty(o,p,attrs)7根據(jù)規(guī)則attrs定義對(duì)象o上,屬性名為p的屬性
Object.defineProperties(o,props)8根據(jù)對(duì)象描述props來(lái)定義對(duì)象o,通常props包含多個(gè)屬性的定義。
Object.seal(o)9一個(gè)對(duì)象在默認(rèn)狀態(tài)下,
extensible: 可以添加新的屬性
configurable: 可以修改已有屬性的特性
Object.seal會(huì)改變這兩個(gè)特性,既不能擴(kuò)展新屬性,也不能修改已有屬性的特性。
Object.freeze(o)10將對(duì)象的每個(gè)自有自有屬性(own property)做如下操作:
屬性的writable特性置為false
屬性的configurable特性置為false
同時(shí),該對(duì)象將不可擴(kuò)展。可見(jiàn),該方法比Object.seal更加嚴(yán)格的限制了對(duì)一個(gè)對(duì)象的未來(lái)改動(dòng)。
Object.preventExtensions(o)11將對(duì)象置為不可擴(kuò)展。
Object.isSealed(o)12判斷一個(gè)對(duì)象是否sealed:
對(duì)象的每個(gè)自有屬性:如果屬性的configurable特性為true,則返回false
如果對(duì)象為extensible的,那么返回false
不滿(mǎn)足以上兩個(gè)條件,則返回true
Object.isFrozen(o)13對(duì)每個(gè)自有屬性,如果該屬性的configurable或writable特性為true,則返回false
如果對(duì)象為extensible的,那么返回false
不滿(mǎn)足以上兩個(gè)條件,則返回true
Object.isExtensible(o)14判對(duì)一個(gè)對(duì)象是否可擴(kuò)展。
Object.keys(o)15返回對(duì)象o的所有可枚舉(enumerable)屬性的名稱(chēng)。
Object.prototype.isPrototypeOf(v)16檢查對(duì)象是否是位于給定對(duì)象v的原型鏈上。
Object.prototype.propertyIsEnumerable(p)檢查一個(gè)對(duì)象上的屬性p是否可枚舉。
Array Array.isArray(a)判斷a是否為為真正的Array。
Array.prototype.indexOf(e,i)17使用“嚴(yán)格等”來(lái)判斷元素e在數(shù)組中的索引號(hào)。一個(gè)可選的搜索起點(diǎn)i。
Array.prototype.lastIndexOf(e,i)18獲取元素e在數(shù)組中最后出現(xiàn)的位置。起始位置i為可選。
Array.prototype.every(t,c)測(cè)試數(shù)組中的每個(gè)元素都滿(mǎn)足測(cè)試t。之后介紹的所有數(shù)組遍歷方法,都支持一個(gè)可選的上下文對(duì)象c,可以靈活設(shè)置回調(diào)函數(shù)的執(zhí)行上下文。傳遞給數(shù)組的測(cè)試函數(shù)、遍歷函數(shù)通常有如下簽名:
function(item, index, array) {}Array.prototype.some(t,c)
測(cè)試數(shù)組中是否有元素滿(mǎn)足測(cè)試t。
Array.prototype.forEach(f,c)使用函數(shù)f遍歷每個(gè)數(shù)組的元素。
Array.prototype.map(f,c)使用函數(shù)f修改每個(gè)數(shù)組的每個(gè)元素。按順序收集f的每個(gè)返回值,并返回這個(gè)新組成的數(shù)組。
Array.prototype.filter(f,c)收集通過(guò)函數(shù)測(cè)試f的書(shū)組元素。
Array.prototype.reduce(r,v)19從左向右,使用函數(shù)r聚集數(shù)組的每個(gè)元素。可以可選的制定一個(gè)初始值v。
Array.prototype.reduceRight(r,v)20Array.prototype.reduce的從右向左的版本。
String String.prototpye.trim去掉字符串兩頭的空白符和換行符。
字符訂閱//property access on strings "abc"[2] === "b"Function Function.prototype.bind(thisTarget, arg1,...argn)21
為了指定當(dāng)前函數(shù)的上下文對(duì)象和運(yùn)行參數(shù),該函數(shù)創(chuàng)建一個(gè)新的函數(shù),保留給定的this對(duì)象和運(yùn)行參數(shù)。
JSON JSON.parse(text)根據(jù)rfc462722標(biāo)準(zhǔn)解析JSON文本。
JSON.stringify(obj)將指定的對(duì)象obj序列化為JSON文本。
Date Date.now獲取當(dāng)前時(shí)間距1970.1.1 00:00:00的毫秒數(shù)。
Date.prototype.toISOString根據(jù)ISO860123生成時(shí)間字符串。
(new Date).toISOString() "2014-04-02T08:31:53.049Z"其他特性
放開(kāi)了關(guān)鍵字不允許作為屬性名的限制24
getter和setter函數(shù)25
http://kangax.github.io/es5-compat-table/??
https://github.com/es-shims/es5-shim??
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://www.ietf.org/rfc/rfc4627.txt??
http://en.wikipedia.org/wiki/ISO_8601??
http://stackoverflow.com/questions/8099270/use-of-reserved-words-in-javascript??
http://ejohn.org/blog/javascript-getters-and-setters/??
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78138.html
摘要:前三個(gè)是為了解決變量聲明定義的問(wèn)題,而最后一個(gè)則影響最大。下文只介紹前三個(gè)特性。這是因?yàn)榈牡牟恢С謮K級(jí)作用域,變量?jī)H僅被限制到函數(shù)作用域內(nèi)。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_syntax_features.html 源代碼: https://github.com/RobinQu/P...
摘要:前三個(gè)是為了解決變量聲明定義的問(wèn)題,而最后一個(gè)則影響最大。下文只介紹前三個(gè)特性。這是因?yàn)榈牡牟恢С謮K級(jí)作用域,變量?jī)H僅被限制到函數(shù)作用域內(nèi)。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_syntax_features.html 源代碼: https://github.com/RobinQu/P...
摘要:前三個(gè)是為了解決變量聲明定義的問(wèn)題,而最后一個(gè)則影響最大。下文只介紹前三個(gè)特性。這是因?yàn)榈牡牟恢С謮K級(jí)作用域,變量?jī)H僅被限制到函數(shù)作用域內(nèi)。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_syntax_features.html 源代碼: https://github.com/RobinQu/P...
摘要:返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后的返回值組成的新數(shù)組。方法測(cè)試數(shù)組中的某些元素是否通過(guò)了指定函數(shù)的測(cè)試,返回值非常實(shí)用的功能,判斷數(shù)組中是否某元素符合特定條件。 ECMAScript 5發(fā)布于2009年12月。ECMAscript 5.1版(下文稱(chēng)ES5)發(fā)布于2011年6月,,并且成為ISO國(guó)際標(biāo)準(zhǔn)(ISO/IEC 16262:2011) http://www.ecma...
摘要:返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后的返回值組成的新數(shù)組。方法測(cè)試數(shù)組中的某些元素是否通過(guò)了指定函數(shù)的測(cè)試,返回值非常實(shí)用的功能,判斷數(shù)組中是否某元素符合特定條件。 ECMAScript 5發(fā)布于2009年12月。ECMAscript 5.1版(下文稱(chēng)ES5)發(fā)布于2011年6月,,并且成為ISO國(guó)際標(biāo)準(zhǔn)(ISO/IEC 16262:2011) http://www.ecma...
閱讀 1542·2021-11-04 16:10
閱讀 2793·2021-09-30 09:48
閱讀 2843·2019-08-29 11:31
閱讀 1584·2019-08-28 18:22
閱讀 3233·2019-08-26 13:44
閱讀 1324·2019-08-26 13:42
閱讀 2850·2019-08-26 10:20
閱讀 759·2019-08-23 17:00