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确定对象类型方法
Mar 30 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
Jan 16 Javascript
使用Java实现简单的server/client回显功能的方法介绍
May 03 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
Jul 17 Javascript
jQuery中nextAll()方法用法实例
Jan 07 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
Sep 26 Javascript
jQuery制作图片旋转效果
Feb 02 Javascript
在React中如何优雅的处理事件响应详解
Jul 24 Javascript
深入理解Angular4订阅(Subscribe)与取消
Nov 22 Javascript
jquery 获取索引值在一定范围的列表方法
Jan 25 jQuery
Layui 解决表格异步调用后台分页的问题
Oct 26 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
Jun 05 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字符串分割函数用法实例
2015/03/17 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
基于jquery的表格排序
2010/09/11 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
js调用图片隐藏&显示实现代码
2013/09/13 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
javascript实现弹出层效果
2019/12/10 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python使用新浪微博API发送微博的例子
2014/04/10 Python
python实现的文件同步服务器实例
2015/06/02 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
大型晚会策划方案
2014/02/06 职场文书
对公司合理化的建议书
2014/03/12 职场文书
党的群众路线学习材料
2014/05/16 职场文书
mysq启动失败问题及场景分析
2021/07/15 MySQL
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js
Docker安装MySql8并远程访问的实现
2022/07/07 Servers
TS 类型兼容教程示例详解
2022/09/23 Javascript