ECMAScript规范
ECMAScript是一种脚本语言规范,从ES6开始广泛使用。
新的规范不一定所有JS引擎都能支持,所以出现了Babel用于将ECMAScript2015+版本的代码转换为向后兼容的JavaScript语法,以便能够运行在当前和旧版本的浏览器或其他环境中。
Babel通过语法转换器来支持新版本的JavaScript语法,这些插件让你现在就能使用新的语法,无需等待浏览器的支持。
Web标准与ECMAScript规范
Web标准是关于Web技术领域的一系列标准,包括HMTL、CSS、DOM、媒体、性能、WebAPI、安全、无障碍、图形等。ECMAScript则是一种语言规范,JavaScript是ECMAScript的一种实现和扩展。
ECMAScript和JavaScript
1996年初网景推出了JavaScript,1996年11月网景正式向ECMA(欧洲计算机制造商协会)提交语言标准。1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262。JavaScript成为了ECMAScript最著名的实现之一。
除此之外,ActionScript和JScript也都是ECMAScript规范的实现语言。
所以是先有JavaScript,后有ECMAScript规范。ECMAScript规范是基于JavaScript制定的,JavaScript是ECMAScript规范的实现。但ECMAScript只是描述语言的语法和基本对象,JavaScript除了核心语言部分,还包括BOM和DOM的WebAPI部分。
JavaScript由三部分组成
1.ECMAScript(核心):规定了语言的组成部分=>语法、类型、语句、关键字、保留字、操作符、对象。
2.BOM(浏览器对象模型):支持访问和操作浏览器窗口,可以控制浏览器显示页面以外的部分。
3.DOM(文档对象模型):把整个页面映射为一个多层节点结果,可借助DOM提供的API,可删除、添加和修改任何节点。
什么是ES5
ECMAScript 是由 Ecma 国际在标准 ECMA-262 中定义的脚本语言规范。到 2015 年,一共发布了 1、2、3、4、5、5.1、6 共 7 个版本(其中 4 被废弃)。我们常把 5.1 之前的 ECMAScript 版本统称做 ES5,又称ECMAScript2009,于2009年完成标准化。
什么是ES6
ES6,全称ECMAScript6.0,即ES6,是ECMAScript的第六次修订,又称ES2015,于2015年06月发版,是JavaScript的下一个版本标准(经常出现的 ES6,不仅仅是 ES2015 这个版本,而是指代 ES2015 和其后每年发布的 ECMAScript 版本)。
ES6主要是为了解决ES5的先天不足,目前浏览器的JavaScript是ES5版本。大多数高版本的浏览器也支持ES6,不过只实现了ES6的部分特性和功能。ES6是继ES5之后的一次改进,相对于ES5更加简洁。提高了开发效率。
ES5特性
1.stric模式:严格模式(developer.mozilla.org/zh-CN/docs/…)限制了一些用法
2.Array增加方法:有every、some、forEach、filter、indexOf、lastIndexOf,isArray、map、reduce、reduceRight方法。
3.Object方法:Object.getPrototypeOf、Object.create等方法。
Object.getPrototypeOf - 方法返回指定对象的原型
Object.create - 方法用于创建一个新对象,使用现有的对象来作为新创建对象的原型
Object.getOwnPropertyNames - 方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括 Symbol 值作为名称的属性)组成的数组。
Object.defineProperty - 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
Object.getOwnPropertyDescriptor - 方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)
Object.defineProperties - 方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。
Object,keys - 法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致。
Object.preventExtensions / Object.isExtensible - 方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。
Object.seal / Object.isSealed - 方法封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置。当前属性的值只要原来是可写的就可以改变。
Object.freeze / Object.isFrozen - 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。
ES6特性
参见:
分享笔记