Ajax In Action 附录 B2.3

来源:互联网 发布:店宝宝软件下载 编辑:程序博客网 时间:2024/04/30 02:46

B 2.3 扩展内嵌类

JavaScript被设计成内嵌在那些可以自定义对象语言中的脚本语言,例如被嵌入在C++或者Java中。这些对象一般被称为内嵌对象或者主对象,这与用户自定义的对象有点差别。不过,原型技术也可以用在内嵌类上。通过Web浏览器,DOM的节点再IE中已经不能再扩展,但是在一些主流浏览器中,其他一些核心类是可以正常工作的,让我们以Array数组类为例看一下,并且定义一些有用的帮助函数:

Array.prototype.indexOf=function(obj){

var result=-1;

for (var i=0;i<this.length;i++){

if (this[i]==obj){

result=i;

break;

}

}

return result;

}

这就实现了为Array添加一个函数,这个函数实现了把Array的的对象的下标有序地返回到一个给定的数组里,在对象不存在的时候返回-1,我们可以进一步完善一下,写一个方法来判断,这个数组是否包含对象:

Array.prototype.contains=function(obj){

return (this.indexOf(obj)>=0);

}

然后添加另一个函数实现检测是否有重复后增加新的成员:

Array.prototype.append=function(obj,nodup){

if (!(nodup && this.contains(obj))){

this[this.length]=obj;

}

}

在定义完这些函数之后生成的Array的对象,不管是通过new生成的,还是通过JSON生成的,都可以使用这几个函数:

var got8=numbers.contains(8);

numbers.append("cheese",true);

对于用户定义的对象的原型,这些可以在对象生成的过程中完成,但是我建议在程序刚开始的时候就来做这些工作,来避免不必要的混淆,尤其是团队协作进行工作的时候。

圆形在我们进行Ajax客户端的对象模型开发的时候会很有用,一个细致的对象模型不仅能定义不同的对象类型,而且能完成类型的继承。JavaScirpt并不提供这个功能,而原型可以帮上这个忙,让我们来看一下。

 
原创粉丝点击