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 DOM 学习第九章 选取范围的介绍
Feb 19 Javascript
jQuery EasyUI NumberBox(数字框)的用法
Jul 08 Javascript
JavaScript基础语法之js表达式
Jun 07 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
JS轮播图实现简单代码
Feb 19 Javascript
AngularJS实现注册表单验证功能
Oct 16 Javascript
vue2.0 路由不显示router-view的解决方法
Mar 06 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
Dec 28 Javascript
JS实现导航栏楼层特效
Jan 01 Javascript
vue常用高阶函数及综合实例
Feb 25 Vue.js
前端vue+express实现文件的上传下载示例
Feb 18 Vue.js
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提交方法
2014/06/27 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
php eval函数一句话木马代码
2015/05/21 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
PHP框架性能测试报告
2016/05/08 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
js使用文件流下载csv文件的实现方法
2019/07/15 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
pandas对指定列进行填充的方法
2018/04/11 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
建筑工程技术应届生求职信
2013/11/17 职场文书
质检员岗位职责
2013/12/17 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
团支部建设方案
2014/05/02 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
手把手教你导入Go语言第三方库
2021/08/04 Golang
PyTorch中permute的使用方法
2022/04/26 Python