jjzjj

Inheritance

全部标签

javascript - javascript中的模板方法

我想在javascript中实现模板方法模式。我有一个带有一些子类的PropertyDecorator:OpenButtonDecorator、SeeButtonDecorator等等。我想在属性装饰器中有下一个功能:varbuild=function(){decorate();//AbstractinPropertyDecorator,definedinsubclassesreturnle.build();}我怎样才能让这个场景发挥作用?也许我实现了错误的继承:S(也有帮助:))提前谢谢你。 最佳答案 Javascript是一种动

javascript - 原型(prototype)复制 vs Object.create() vs new

我在使用继承时注意到可以通过三种方式获得相同的结果。有什么区别?functionAnimal(){}Animal.prototype.doThat=function(){document.write("Doingthat");}functionBird(){}//ThismakesdoThat()visibleBird.prototype=Object.create(Animal.prototype);//Solution1//Youcanalsodo://Bird.prototype=newAnimal();//Solution2//Or://Bird.prototype=Anima

javascript - 为什么在 javascript 中使用基于类的 OOP 样式继承?

如果我没有完全错的话,如今javascript中的每个框架/库/方法都倾向于模仿基于类的OOP样式继承。这样做的原因似乎是人们认为基于类的OOP继承更容易理解,而且大多数程序员都知道OOP。根据我的经验,我没有找到任何一种观点的证据。我认为javascript原型(prototype)继承很好(而且我怀疑将另一种范式强加给一种语言而不是它所基于的范式是否有用)。我遇到的大多数开发人员在经典OOP方面也不是那么好。那么选择经典OOP样式继承而不是原型(prototype)继承的原因是什么? 最佳答案 我认为答案就在您的问题中-大多数程

Javascript多重继承

任何人都可以帮助下面的代码。我试图了解多重继承,但不确定为什么它不起作用。顺便说一句,下面的代码是否用于多重继承。谢谢TestDocfunctionclassX(){this.messageX="thisisXMessage";this.alertX=function(){alert(this.messageX);};}functionclassY(){this.messageY="thisisYMessage";this.alertY=function(){alert(this.messageY);};}functionclassZ(){classX.apply(this);clas

javascript - 伪类继承相对于函数继承(工厂函数)有哪些技术优势?

替代标题:“为什么这么多流行的JavaScript库使用伪类继承而不是函数继承(工厂函数)?”JavaScript:TheGoodParts建议使用工厂函数,以便您获得方法和属性的真正隐私。这是有道理的,所以我想知道为什么这么多现代JS库仍然使用伪类继承(使用new关键字)。与工厂功能相比,走这条路有一些技术优势吗?如果不是,是否只是一种风格选择?编辑:这不是基于意见的帖子。我不是在问哪个更好,我是在问伪经典继承相对于函数式继承有哪些技术优势,以了解为什么有人会选择这种风格。编辑2:我可以看到伪经典的几个优点:当您console.log一个原型(prototype)的实例时,它会向您显

javascript - 基于原型(prototype)继承在实际项目中的应用

基于类的继承展示了它在创建大型编程系统(尤其是GUI系统)中的有用性。如何在现实生活中应用基于原型(prototype)的继承?我们应该如何构建系统而不是创建类层次结构?对于基于类的OOP,是否存在任何基于真正原型(prototype)的OOP的编程模式? 最佳答案 nahab:ArehereexistanyprogrammingpatternsforrealprototypicalbasedOOPasexistsforclass-basedOOP?这question应该会指导您找到一些关于实用Javascript设计模式的好资源。

javascript - 原型(prototype)继承应该节省内存吧?

我一直想知道在JavaScript中使用原型(prototype)是否应该比将对象的每个成员直接附加到它更有效,原因如下:原型(prototype)只是一个对象。实例仅包含对其原型(prototype)的引用。对比:每个实例都包含构造函数定义的所有成员和方法的副本。我开始了一个小实验:varTestObjectFat=function(){this.number=42;this.text=randomString(1000);}varTestObjectThin=function(){this.number=42;}TestObjectThin.prototype.text=rando

javascript - 如果Object.prototype被修改,如何测试对象是否为 "isEmpty()"?

我想测试一个对象是否为空:{}。通常使用以下内容:functionisEmpty(obj){for(varpropinobj){if(obj.hasOwnProperty(prop))returnfalse;}returntrue;}但假设Object原型(prototype)被添加到如下:Object.prototype.Foo="bar";测试:alert(isEmpty({}));//trueObject.prototype.Foo="bar";alert({}.Foo);//"bar"ohno...alert(isEmpty({}));//true...**huh?!**我试图

javascript 原型(prototype)继承 - 共享属性

我在原型(prototype)中保存了一个属性_data作为所有创建对象的定义。functionA(){}A.prototype._data=[];现在所有从A创建的对象都有属性_data。我想要原型(prototype)继承,其中原型(prototype)的_data将具有原型(prototype)链中所有原型(prototype)的_data值。不知道直接的方法,在这个例子中我使用了一个getterget()。functionA(){}A.prototype._data=[];A.prototype.add=function(rec){this.__proto__._data.pu

javascript - __proto__ 和 JavaScript 中的继承

我已经研究了几天JavaScript继承,虽然我已经取得了很大的进步,但有些事情我还不太明白。例如,我发现这种行为非常令人困惑:varEmployee=functionEmployee(){this.company='xyz';};varManager=functionManager(){this.wage='high';};varm=newManager();m;//{"wage":"high",__proto__:Manager}--noproblemssofar.Manager.prototype=newEmployee();varn=newManager;m.company;/