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 相关文章推荐
疯掉了,尽然有js写的操作系统
Apr 23 Javascript
关于viewport,Ext.panel和Ext.form.panel的关系
May 07 Javascript
ie支持function.bind()方法实现代码
Dec 27 Javascript
详解javascript数组去重问题
Nov 06 Javascript
jQuery实现form表单元素序列化为json对象的方法
Dec 09 Javascript
jQuery点击输入框显示验证码图片
May 19 Javascript
基于AGS JS开发自定义贴图图层
Mar 31 Javascript
详解Angular2中Input和Output用法及示例
May 21 Javascript
简单实现jQuery手风琴效果
Aug 18 jQuery
基于JavaScript实现前端数据多条件筛选功能
Aug 19 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
Sep 14 Javascript
原生JS实现简单的无缝自动轮播效果
Sep 26 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
PHP读取目录下所有文件的代码
2008/01/07 PHP
PHP 数字左侧自动补0
2008/03/31 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
收集的几个Python小技巧分享
2014/11/22 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Django 框架模型操作入门教程
2019/11/05 Python
如何在python中写hive脚本
2019/11/08 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
五十岁生日宴会答谢词
2014/01/15 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
岗位说明书标准范本
2014/07/30 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
2015毕业寄语大全
2015/02/26 职场文书