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宝典学习笔记
Feb 07 Javascript
jquery ajax return没有返回值的解决方法
Oct 20 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
Nov 13 Javascript
JavaScript伸缩的菜单简单示例
Dec 03 Javascript
JS清除选择内容的方法
Jan 29 Javascript
JavaScript页面模板库handlebars的简单用法
Mar 02 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
Mar 11 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
vue升级之路之vue-router的使用教程
Aug 14 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
js实现简单贪吃蛇游戏
May 15 Javascript
vue实现简单加法计算器
Oct 22 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的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
JS获取时间的方法
2015/01/21 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
python3爬取数据至mysql的方法
2018/06/26 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
校庆接待方案
2014/03/18 职场文书
公司踏青活动方案
2014/08/16 职场文书
水电维修专业推荐信
2014/09/06 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js