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 表格排序和表头浮动效果(扩展SortTable)
Apr 07 Javascript
js弹出div并显示遮罩层
Feb 12 Javascript
Underscore.js常用方法总结
Feb 28 Javascript
js编写贪吃蛇的小游戏
Aug 24 Javascript
全面了解javascript三元运算符
Jun 27 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
jQuery中DOM节点的删除方法总结(超全面)
Jan 22 Javascript
TableSort.js表格排序插件使用方法详解
Feb 10 Javascript
Angular ng-animate和ng-cookies用法详解
Apr 18 Javascript
详解JavaScript中关于this指向的4种情况
Apr 18 Javascript
解决vue+elementui项目打包后样式变化问题
Aug 03 Javascript
JavaScript中时间格式化新思路toLocaleString()
Nov 07 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
各种战术和打法的原创者
2020/03/04 星际争霸
一个经典的PHP验证码类分享
2014/11/18 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
python实现QQ批量登录功能
2019/06/19 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
使用python绘制温度变化雷达图
2019/10/18 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
拉丁舞学习者的自我评价
2013/10/27 职场文书
魅力教师事迹材料
2014/01/10 职场文书
关于工资低的辞职信
2014/01/14 职场文书
工作表现自我评价
2014/02/08 职场文书
亲子拓展活动方案
2014/02/20 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
喜之郎果冻广告词
2014/03/20 职场文书
党员大会主持词
2014/04/02 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
AJAX学习笔记
2021/05/18 Javascript