JavaScript高级程序设计


Posted in Javascript onDecember 29, 2006

前一章简要谈及对象的使用,现在要详细介绍它们了。对象的创建或销毁都在JavaScript执行过程中发生,理解这种范式的含义对理解整个语言至关重要。
3.2.1 声明和实例化
对象是用关键字new后跟要实例化的类的名字创建的:
JavaScript高级程序设计
第一行代码创建了Object类的一个实例,并把它存储在变量oObject中。第二行代码创建了String类的一个实例,把它存储在变量oStringObject中。如果构造函数无参数,括号则不是必需的,因此可以采用下面的形式重写上面的两行代码:
JavaScript高级程序设计
3.2.2  对象引用
在第2章中,介绍了引用类型的概念。在ECMAScript中,不能访问对象的物理表示,只能访问对象的引用。每次创建对象,存储在变量中的都是该对象的引用,而不是对象本身。
3.2.3  对象废除
ECMAScript有无用存储单元收集程序,意味着不必专门销毁对象来释放内存。当再没有对对象的引用时,称该对象被废除(dereference)了。运行无用存储单元收集程序时,所有废除的对象都被销毁。每当函数执行完它的代码,无用存储单元收集程序都会运行,释放所有的局部变量,还有在一些其他不可预知的情况下,无用存储单元收集程序也会运行。
把对象的所有引用都设置为null,可以强制性的废除对象。例如:
JavaScript高级程序设计
当变量oObject设置为null后,对第一个创建的对象的引用就不存在了。这意味着下次运行无用存储单元收集程序时,该对象将被销毁。
每用完一个对象后,就将其废除,来释放内存,这是个好习惯。这样还确保不再使用已经不能访问的对象,从而防止程序设计错误的出现。此外,旧的浏览器(如IE/Mac)没有全面的无用存储单元回收程序,所以在卸载页面时,对象可能不能被正确销毁。废除对象和它的所有特性是确保内存使用正确的最好方法。
废除对象的所有引用时要当心。如果一个对象有两个或更多引用,则要正确废除该对象,必须将其所有引用都设置为null
3.2.4  早绑定和晚绑定
所谓绑定(binding),即把对象的接口与对象实例结合在一起的方法。
早绑定(early binding)是指在实例化对象之前定义它的特性和方法,这样编译器或解释程序就能提前转换机器代码。在Java和Visual Basic这样的语言中,有了早绑定,就可以在开发环境中使用IntelliSense(即给开发者提供其对象中特性和方法列表的功能)。ECMAScript不是强类型语言,所以不支持早绑定。
另一方面,晚绑定(late binding)指的是编译器或解释程序在运行前,不知道对象的类型。使用晚绑定,无需检查对象的类型,只需要检查对象是否支持特性和方法即可。ECMAScript中的所有变量都采用晚绑定方法,这样就允许执行大量的对象操作,而无任何惩罚。

Javascript 相关文章推荐
Javascript 复制数组实现代码
Nov 26 Javascript
用jQuery打造TabPanel效果代码
May 22 Javascript
setTimeout的延时为0时多个浏览器的区别
May 23 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
JavaScript数组对象赋值用法实例
Aug 04 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
Aug 24 Javascript
基于angularJS的表单验证指令介绍
Oct 21 Javascript
js实现简单的获取验证码按钮效果
Mar 03 Javascript
微信小程序实现锚点定位楼层跳跃的实例
May 18 Javascript
Koa2 之文件上传下载的示例代码
Mar 29 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
JavaScript 参考教程
Dec 29 #Javascript
js自带函数备忘 数组
Dec 29 #Javascript
slice函数的用法 之不错的应用
Dec 29 #Javascript
通过js脚本复制网页上的一个表格的不错实现方法
Dec 29 #Javascript
javascript中对对层的控制
Dec 29 #Javascript
JavaScript方法和技巧大全
Dec 27 #Javascript
fromCharCode和charCodeAt 方法
Dec 27 #Javascript
You might like
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
destoon复制新模块的方法
2014/06/21 PHP
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
javascript数组操作方法小结和3个属性详细介绍
2014/07/05 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
学院书画协会部门岗位职责
2013/12/01 职场文书
行政助理工作职责范本
2014/03/04 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
个人求职信格式范文
2015/03/20 职场文书
保研推荐信范文
2015/03/25 职场文书
电影复兴之路观后感
2015/06/02 职场文书
小平小道观后感
2015/06/09 职场文书
会议简讯范文
2015/07/20 职场文书
人代会简报
2015/07/21 职场文书
2016入党心得体会范文
2016/01/06 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
Python上下文管理器Content Manager
2021/06/26 Python
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android
python 远程执行命令的详细代码
2022/02/15 Python