摘要:特性本文将简单列举的核心特性。获取自有属性名列表。以给丁对象为创建新的对象并返回。将对象的每个自有自有属性做如下操作属性的特性置为属性的特性置为同时,该对象将不可扩展。检查对象是否是位于给定对象的原型链上。
原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es5.html
源代码: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/JavaScript_Core/ECMAScript/es5.md
本文需要补充更多例子
本文存在批注,但该网站的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)20Array.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"其他特性
放开了关键字不允许作为属性名的限制24
getter和setter函数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/ ↩
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/78138.html
摘要:前三个是为了解决变量声明定义的问题,而最后一个则影响最大。下文只介绍前三个特性。这是因为的的不支持块级作用域,变量仅仅被限制到函数作用域内。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_syntax_features.html 源代码: https://github.com/RobinQu/P...
摘要:前三个是为了解决变量声明定义的问题,而最后一个则影响最大。下文只介绍前三个特性。这是因为的的不支持块级作用域,变量仅仅被限制到函数作用域内。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_syntax_features.html 源代码: https://github.com/RobinQu/P...
摘要:前三个是为了解决变量声明定义的问题,而最后一个则影响最大。下文只介绍前三个特性。这是因为的的不支持块级作用域,变量仅仅被限制到函数作用域内。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_syntax_features.html 源代码: https://github.com/RobinQu/P...
摘要:返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。方法测试数组中的某些元素是否通过了指定函数的测试,返回值非常实用的功能,判断数组中是否某元素符合特定条件。 ECMAScript 5发布于2009年12月。ECMAscript 5.1版(下文称ES5)发布于2011年6月,,并且成为ISO国际标准(ISO/IEC 16262:2011) http://www.ecma...
摘要:返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。方法测试数组中的某些元素是否通过了指定函数的测试,返回值非常实用的功能,判断数组中是否某元素符合特定条件。 ECMAScript 5发布于2009年12月。ECMAscript 5.1版(下文称ES5)发布于2011年6月,,并且成为ISO国际标准(ISO/IEC 16262:2011) http://www.ecma...
阅读 1515·2021-11-04 16:10
阅读 2716·2021-09-30 09:48
阅读 2820·2019-08-29 11:31
阅读 1522·2019-08-28 18:22
阅读 3198·2019-08-26 13:44
阅读 1303·2019-08-26 13:42
阅读 2829·2019-08-26 10:20
阅读 715·2019-08-23 17:00