javascript中能使用匿名对象吗?
今天在总结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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你定义的就是true 所以返回true
其实这么干会出现一个问题就是当你父类中的this指向一个对象时这个对象会被子类的多个实例共享,因为你的之类引用了父类的实例作为其原型链,我们知道原型链中的方法属性对象皆是在内存中共享的。所以完整的继承应该在子类中第一时间call或apply一次父类方法实现将父类中直接以this指针指向的属性方法对象在子类中实现,即