今天在总结js的继承时,遇到这么个问题,在子类型中重写超类型中的方法之后,子类型的实例调用这个方法就是调用这个重写之后的;超类型的实例调用这个方法,调用的是超类型中的方法,我偷懒就没有再创建超类型的实例,而是仿照java中的匿名对象直接调用这个方法,居然返回了正确的值。
想问一下大家这个用法对不对,符不符合js的规范,或者对于js中的匿名对象还有什么奇淫技巧。
以下是我的代码:
function SuperType(){
this.property = true;
};
SuperType.prototype.getSuperValue = function(){
return this.property;
};
function SubType(){
this.subproperty = false;
}
//让SuperType继承SubType
SubType.prototype = new SuperType();
//添加新方法
SubType.prototype.getSubValue = function(){
return this.subproperty;
};
//重写超类型中的方法
SubType.prototype.getSuperValue = function(){
return false;
};
//子类型实例调用
var instance = new SubType();
alert(instance.getSuperValue()); //false
//超类型实例调用
alert((new SuperType()).getSuperValue()); //我仿照java这么写,居然返回true
你定义的就是true 所以返回true