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 相关文章推荐
用Jquery.load载入页面后样式没了页面混乱的解决方法
Oct 20 Javascript
jQuery中each()方法用法实例
Dec 27 Javascript
JavaScript函数使用的基本教程
Jun 04 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
Nov 19 Javascript
实例讲解JavaScript中instanceof运算符的用法
Jun 08 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
bootstrap的工具提示实例代码
May 17 Javascript
用vscode开发vue应用的方法步骤
May 06 Javascript
Vue项目实现换肤功能的一种方案分析
Aug 28 Javascript
微信小程序图片右边加两行文字的代码
Apr 23 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
jQuery实现穿梭框效果
Jan 19 jQuery
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
Session的工作方式
2006/10/09 PHP
使用PHP的日期与时间函数技巧
2008/04/24 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
ThinkPHP模型详解
2015/07/27 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
vue实现循环切换动画
2018/10/17 Javascript
python实现发送邮件及附件功能
2021/03/02 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
工商管理应届生求职信
2013/10/07 职场文书
装饰资料员岗位职责
2013/12/30 职场文书
小学二年级学生评语
2014/04/21 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
森林病虫害防治方案
2014/06/02 职场文书
导航工程专业自荐信
2014/09/02 职场文书
个人优缺点总结
2015/02/28 职场文书
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python