JavaScript 学习笔记 4 _扩建内建类继承

下面该是扩展内建类的部分了~~

扩建内建类

JavaScript用来嵌入在那些能够向脚本环境暴露自己本地对象的程序中。这些对象通常描述为内建类或者宿主对象,它们与我们讨论过的用户定义对象有某种程度的差别。尽管如此,原型机制也可以与内建类协同工作。在Web浏览器中,DOM节点在IE浏览器中不能扩展,但是其他的核心类在所有主要的浏览器中都是可以扩展的。如Array类,Object类。
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对象提供了一个额外的函数,它返回一个给定数组中的对象的数字索引,如果数组不包含这个东西就返回-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 numbers = [1,2,3,4,5];
var got8 = numbers.contains(8);
numbers.append(“cheese”,true);

对于原型,建议只在程序的开始修改一次,以免不必要的混乱。

接下来如果不希望定义不同的对象类型,而希望在类型之间实现继承。JavaScript没有提供方便的方法来做这件事情,但是原型在这里也可以派上用场。


原型的继承

继承有一个作用域(scope)的概念。一个对象的方法或属性确定了谁可以使用它——即,它是否是公用的,私有的或者受保护的。

当定义一个领域模型时,作用域和继承是很有用的特征。但是,JavaScript对这两者都没有在本地实现。尽管如此,总是会有一些相当优雅的解决方案。

Doug Crockford开发了一些灵巧的变通方法,使得JavaScript对象中能够使用继承和作用域。但是复杂,所以有兴趣自己去看吧。

在面向对象领域中,有一种逐渐远离使用复杂的继承,转向使用组合的趋势。通过使用组合,普通的功能移出了对象而转到帮助类中,帮助类可以作为一个成员附加到任何需要它的类上面。在很多场合,组合可以提供与继承相似的优点,JavaScript可以完美而充分得支持组合。


下一站即将是反射(reflection),ready~~~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值