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 相关文章推荐
jQuery EasyUI API 中文文档 - NumberBox数字框
Oct 13 Javascript
js操作textarea 常用方法总结
Dec 03 Javascript
javascript Array.prototype.slice的使用示例
Nov 14 Javascript
jQuery中focus事件用法实例
Dec 26 Javascript
javascript+html5实现绘制圆环的方法
Jul 28 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
jquery实现定时自动轮播特效
Dec 10 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
Apr 25 Javascript
js封装成插件的步骤方法
Sep 11 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
Jan 31 Javascript
node.js +mongdb实现登录功能
Jun 18 Javascript
js实现简单音乐播放器
Jun 30 Javascript
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
用文本作数据处理
2006/10/09 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
PHP取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
Javascript基础教程之argument 详解
2015/01/18 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
Less 安装及基本用法
2018/05/05 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python 字典dict使用介绍
2014/11/30 Python
Python中的默认参数详解
2015/06/24 Python
Python max内置函数详细介绍
2016/11/17 Python
基于Python __dict__与dir()的区别详解
2017/10/30 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
Python assert语句的简单使用示例
2019/07/28 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
python实现计算器简易版
2020/12/17 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
SQL语言面试题
2013/08/27 面试题
手机银行营销方案
2014/03/14 职场文书
南湾猴岛导游词
2015/02/09 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
安全教育培训心得体会
2016/01/15 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python