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事件模拟
Jun 27 Javascript
jquery滚动条插件jScrollPane的使用介绍
Nov 08 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
Oct 20 Javascript
详解JavaScript中void语句的使用
Jun 04 Javascript
jQuery插件扩展测试实例
Jun 21 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 Javascript
javascript删除html标签函数cIsHTML
Jan 09 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
Mar 09 Javascript
详谈commonjs模块与es6模块的区别
Oct 18 Javascript
vue实现消息的无缝滚动效果的示例代码
Dec 05 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
js如何验证密码强度
Mar 18 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
php高级编程-函数-郑阿奇
2011/07/04 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
php自定义session示例分享
2014/04/22 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
Python实现提取文章摘要的方法
2015/04/21 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
通过实例学习Python Excel操作
2020/01/06 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
对python中return与yield的区别详解
2020/03/12 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
html5-Canvas可以在web中绘制各种图形
2012/12/26 HTML / CSS
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
肯尼迪就职演说稿
2013/12/31 职场文书
优秀管理者获奖感言
2014/02/17 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
校园活动策划方案
2014/06/13 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
护林员个人总结
2015/03/04 职场文书