您所在的位置: 首页>>读书频道>>设计开发>>其它开发>>

第3章 Object扩展和性能及Web应用之神兵利器

http://book.51cto.com  2008-04-09 15:08  夏天  电子工业出版社博文视点  我要评论(0)
  • 摘要:《JavaScript高级应用与实践》展示了Object和Functiong各自的属性和方法,讲了Object扩展和性能及Web应用之神兵利器,本文为第三章的概括部分。
  • 标签:JavaScript  Java  JavaScript高级应用与实践

第3章  Object扩展和性能及Web应用之神兵利器

Object和Function有着异曲同工之妙,它们都可以有属性和方法。不过却有着极大的差别,请看表3-1。

表3-1  Object和function的一些比较

   

Object

Function

定义后

不能再使用new创建对象实例,可以赋值给其他变量,多个变量同时引用一个对象,或者克隆对象

可以使用new创建多个对象实例,使用时互不影响,但是使用内存也会更多

多态性

具备

具备

继承

无法继承,除非用复制的方式来实现

可以实现

toStringvalueOf

如果你不实现它的代码,别人无法通过toStringvalueOf查看到你的代码

默认情况下,toStringvalueOf是可以看到function的代码的

prototype原型问题

Object原型增加方法或属性,new function出来的对象也同样有这样的方法—因此这是扩展通用对象功能的好地方

Function原型增加方法或属性,Object实例对象不会有这些方法和属性

引用传递

支持

支持

数组下标运算符号的支持

通过设计可以支持

通过设计可以支持

prototype原型上扩展的属性和方法

Mozilla Firefox中等于给body【包含】内容的所有HTML DOM对象扩展属性和方法

Function原型上扩展,则不会

注意:String、Number、Boolean对象不支持引用传递。
 
其他区别则是本章主要讲解的内容,这里就先不讲。
 
其实,无论是Object也好,function也好,我们的目的都是一样的,就是定义和创建一个可用对象实例,如果不是必需的,笔者特别推荐采用Object的形式,因为定义和实例化一次就完成了。
 
许多读者在想,本章的内容讲的是不断地在Object对象上进行扩展,以便在各种对象的应用时,随时都能拿来就用,那么内存消耗上会不会无形中增加许多,从而导致性能下降呢?其实你大可不必担心,关于这个问题,笔者做了测试,创建100 000个对象,内存只是比一般的方式多了176K左右,平均下来是每个对象创建时多了1.8字节,牺牲这点内存是值得的,再说,你的设计中如果真要创建10万以上对象却又不delete,那你可真的要好好设计一下。
 
这一测试下来,就很明白了,扩展Object,在各对象里存在的只是对这个原始的Object的一个引用罢了。测试方式如下所示。
<html>
<head><meta http-equiv=content-type content="text/html; charset=utf-8">
<title>测试”“对Object扩展后内存的使用情况”</title>
</head>
<body>
<!--
第一次观察内参情况后在把这里的注释打开
<script type="text/javascript" language="JavaScript"
src="/jcore/resource/javascript/Jcore.js"></script>
-->
<script type="text/javascript" language="JavaScript">
<!--
var arrTmp = [];for(var i = 0; i < 100000; i++)  arrTmp.push(new Date);
-->
</script>
</body>
</html>
【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Java编程开发手册
Java基础教程
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有