ES5特征 - ECMAScript特征 - Javascript中心

原文: 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多半是扩大原生对象的功用,让ObjectArrayFunction越发壮大。其他的特征包括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

以给丁对象oprototype建立新的对象并返回。假如对象形貌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

一个对象在默许状态下,

  1. extensible: 能够增加新的属性
  2. 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

  • 对每一个自有属性,假如该属性的configurablewritable特征为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'

其他特征

  • 放开了关键字不允许作为属性名的限定24
  • getter和setter函数25
  1. http://kangax.github.io/es5-compat-table/ 

  2. https://github.com/es-shims/es5-shim 

  3. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf 

  4. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor 

  5. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames 

  6. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create 

  7. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty 

  8. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperties 

  9. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/seal 

  10. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze 

  11. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/preventExtensions 

  12. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isSealed 

  13. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isFrozen 

  14. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isExtensible 

  15. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys 

  16. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isPrototypeOf 

  17. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf 

  18. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf 

  19. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce 

  20. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduceRight 

  21. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind 

  22. http://www.ietf.org/rfc/rfc4627.txt 

  23. http://en.wikipedia.org/wiki/ISO_8601 

  24. http://stackoverflow.com/questions/8099270/use-of-reserved-words-in-javascript 

  25. http://ejohn.org/blog/javascript-getters-and-setters/ 

    原文作者:RobinQu
    原文地址: https://segmentfault.com/a/1190000000515151
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞