Ajax In Action 附录 B2.3

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并不提供这个功能,而原型可以帮上这个忙,让我们来看一下。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值