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的函数
Jan 31 Javascript
jQuery 跨域访问问题解决方法
Dec 02 Javascript
js Array对象的扩展函数代码
Apr 24 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
javascript实例分享---具有立体效果的图片特效
Jun 08 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
Jun 16 Javascript
JQuery操作元素的css样式
Mar 09 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
Vue组件开发初探
Feb 14 Javascript
Vue 实现列表动态添加和删除的两种方法小结
Sep 07 Javascript
Vue使用轮询定时发送请求代码
Aug 10 Javascript
详解vue组件之间的通信
Aug 30 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
php readfile下载大文件失败的解决方法
2017/05/22 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
C语言笔试题回忆
2015/04/02 面试题
财务人员担保书
2014/05/13 职场文书
2014年财政工作总结
2014/12/10 职场文书
店铺转让协议书
2015/01/29 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
Python 数据可视化之Matplotlib详解
2021/11/02 Python
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏