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 获取网页参数系统
Jul 19 Javascript
Javascript与flash交互通信基础教程
Aug 07 Javascript
css transform 3D幻灯片特效实现步骤解读
Mar 27 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
May 22 Javascript
javascript学习笔记(八)正则表达式
Oct 08 Javascript
浅谈JavaScript对象与继承
Jul 10 Javascript
COM组件中调用JavaScript函数详解及实例
Feb 23 Javascript
html5+canvas实现支持触屏的签名插件教程
May 08 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
vue项目前端知识点整理【收藏】
May 13 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
php ctype函数中文翻译和示例
2014/03/21 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
PHP7新特性
2021/03/09 PHP
js获取客户端外网ip的简单实例
2013/11/21 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
JQuery遍历DOM节点的方法
2015/06/11 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
python获取当前日期和时间的方法
2015/04/30 Python
用python实现对比两张图片的不同
2018/02/05 Python
python实现弹窗祝福效果
2019/04/07 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
python基于property()函数定义属性
2020/01/22 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
保安自我鉴定范文
2013/12/08 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
神龙架导游词
2015/02/11 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
家访教师心得体会
2016/01/23 职场文书
python for循环赋值问题
2021/06/03 Python
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电