JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性


Posted in Javascript onOctober 11, 2012

接下来应该是BOM和HTML5了,但是鉴于ECMAScript5相对于ECMAScript3的新变化比较多,而且这些变化也非常的有意思,因此在这篇文章中再将我认为的有意思的变化(并非全部变化)集中整理一下,但这里只是列举,不具体展开。

一、语法变化

1、关键字和保留字

在ES3中,使用关键字做标识符会导致“Identifier Expected ”错误,而使用保留字做标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎。在ES5中,关键字和保留字虽然不能作为标识符 使用,但可以作为对象的属性名。在ES5中的关键字和保留字中,新增了let和yield。为了保证最大的兼容性,不管是ES3还是ES5中的关键字和保留字,都不要作为标识符使用。

2、属性特性

ES5允许使用用户定义的属性描述来覆盖给定属性的enumerable、configurable、writable、get、set等属性了。具体方法是使用定义在Object对象上的静态函数。

3、严格模式

最大的语法变化,就是引入了严格模式,可以通过语句"use strict"; 来开启严格模式,在代码顶部添加整个脚本启用严格模式,在函数内部添加则只对该函数启用严格模式。严格模式下主要的变化有:

(1)使用变量前必须先定义,即不允许隐式的全局变量

(2)不使用八进制数据

(3)不使用with语句

(4)eval

A、不能使用eval作为标识符,因此不能把变量或函数命名为eval

B、外部不能访问在eval()函数中定义的变量

(5)arguments

A、不能使用arguments作为标识符

B、不能修改作为函数内部对象的arguments,因此形式参数和arguments之间不再有同步变化

C、不能访问arguments.callee

D、ES5中定义了arguments.caller属性,它的值始终是undefined,主要用于区分arguments.caller和函数的caller,但是不能在严格模式下访问

(6)函数

A、函数中不能出现两个同名的形式参数

B、不能给函数的caller属性赋值

C、未指定环境对象而调用函数,this值不会指向window,而是undefined

(7)对象

A、对象中不能出现两个同名的属性

B、修改一个特性[[writable]]为false的属性时,会抛出异常,而不是静默失败,同样的使用delete删除特性[[configurable]]为false的属性时也会抛出异常

(8)delete

不能使用delete删除显示声明的变量和函数

二、内建对象的变化

1、Object对象

(1)继承相关方法:create()、getPrototypeOf()

(2)属性相关方法:defineProperty()、defineProperties()、getOwnPropertyDescriptor()、getOwnPropertyNames()、keys()

(3)防篡改方法:preventExtensions()、isExtensible()、seal()、isSealed()、freeze()、isFrozen()

2、Function对象

(1)添加了bind()方法。

(2)规范化了一个函数对象的属性caller,用于指向调用当前函数的函数的引用。

(3)prototype是不可枚举的

3、Array对象

(1)判断方法:添加了静态方法Array.isArray(obj)用于判断obj是否为一个Array对象的实例。

(2)索引方法:添加了两个用于查找指定项索引的方法indexOf()和lastIndexOf()。查找时使用全等(===)进行匹配。

(3)迭代方法:添加了every()、some()、forEach()、map()、filter()方法。

(4)缩小方法:添加了reduce()和reduceRight()方法。

4、String对象

添加了trim()方法。

5、JSON对象

添加了原生JSON内建对象。

6、Date对象

添加了Date.now()、Date.prototype.toJSON()等方法。

7、RegExp对象

在ES3中,使用正则表达式字面量时共享一个RegExp实例,而在ES5中,每次使用正则表达式字面量时都要创建新的RegExp实例,就像使用RegExp构造函数一样。

Javascript 相关文章推荐
javascript:window.open弹出窗口的位置问题
Mar 18 Javascript
在JavaScript中使用timer示例
May 08 Javascript
Javascript中call与apply的学习笔记
Sep 22 Javascript
javascript 中__proto__和prototype详解
Nov 25 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
Aug 05 Javascript
JS实现适合于后台使用的动画折叠菜单效果
Sep 21 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
微信小程序-详解数据缓存
Nov 24 Javascript
vue2.0获取自定义属性的值
Mar 28 Javascript
20行JS代码实现网页刮刮乐效果
Jun 23 Javascript
详解vue-router 初始化时做了什么
Jun 11 Javascript
vue操作下拉选择器获取选择的数据的id方法
Aug 24 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
Oct 11 #Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
Oct 11 #Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
Oct 11 #Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
Oct 11 #Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 #Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
Oct 11 #Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
Oct 11 #Javascript
You might like
PHP获取url的函数代码
2011/08/02 PHP
php实现简单四则运算器
2020/11/29 PHP
js常用函数 不错
2006/09/08 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
python线程信号量semaphore使用解析
2019/11/30 Python
python正则表达式实例代码
2020/03/03 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
财务主管自我鉴定
2014/01/17 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
励志演讲稿范文
2014/04/29 职场文书
师德师风建设方案
2014/05/08 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏