您的位置:首页 > 其它

Ajax In Action 附录 B2.3

2008-03-19 10:22 357 查看
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并不提供这个功能,而原型可以帮上这个忙,让我们来看一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: