javascript之调用被覆盖的方法

来源:互联网 发布:12315 如何投诉淘宝 编辑:程序博客网 时间:2024/04/28 03:40
jquery博客这两天在看原生的javascript,看到一些以前没关注到的,留点字迹放博客里,方便以后看看。

当子类定义一个和超类的方法具有相同名字的方法时候,子类的方法会覆盖超类的方法。
在创建已有类的子类时候,这是相对常见事哦。比如,任何时候,当为一个类定义toString()方法时,就会覆盖掉Object的toString()方法。
一个方法覆盖另一个方法的时候,前者经常是要增强被覆盖方法的功能,而不是完全替换其功能。要是做到这一点,方法必须能够调用它所覆盖掉的方法。从某个意义上说,这是一种方法链,就像构造函数链一样。可是调用一个被覆盖的方法比调用一个超类构造函数更难。
弄个例子。比如Rectange类已经定义一个toString()方法
Rectange.prototype.toString=function(){
return “["+this.width+","+this.height+"]“;
}
如果给Rectange一个toString()方法,就必须覆盖掉PositionedRectange中的toString()的方法,以便子类的实例中有一个字符表示能够反映其所有的属性,而不只是width和height属性。PositionedRectange是一个很简单的类,其toString()方法可以只是返回所有属性的值。但是,为方便举例子,让我们处理position属性并将width属性和height属性委托给其超类。
Rectange.prototype.toString=function(){
return “(“+this.x+”,”+this.y+”)”+
Rectange.prototype.toString.apply(this);
}
超类的toString()的实现是超类的原型对象的一个属性。注意,无法直接调用该方法。使用apply()来调用该方法,这样,就可以指定应该基于哪个对象来调用它。

转自 jquery http://www.jqueryba.com/316.html