我想知道如何在JavaScript中模拟类继承。我知道类不适用于JavaScript,我们使用的方式是通过函数创建对象并通过Prototype对象进行继承。例如,如何将此结构转换为JavaScript:publicclassMankind{publicstringname;publicstringlastname;}publicclassPerson:Mankind{publicvoidRun(stringfromWhat){//writetherunlogic}}这段代码在JavaScript中的等价物是什么。编辑:我还找到了另一个链接,其中DouglasCrockford将不同的继
考虑以下JavaScript片段:functionfoo(){this.bar=function(){};}//or...(ifweusedanemptyconstructorfunction)foo.prototype.bar=function(){};我这样做有什么区别:functionbaz(){}baz.prototype=newfoo();在这两种情况下,baz最终都有一个成员bar但有什么不同呢?为什么我要在不同的地方这样做? 最佳答案 区别在于属性位于原型(prototype)链中的位置。假设我们有f=newfoo()
是否有一个小型、轻量级的javascript类继承解决方案,可以在客户端和服务器端(node.js)很好地工作?我不想要一个大库,只需要一个可以让我声明一个构造函数和一些方法,然后让一个类能够继承它的东西。 最佳答案 JohnResig在大约25行代码中概述了一个简单的继承框架here.我已经看到它使用效果很好。你可以这样使用它:varVehicle=Class.extend({init:function(wheels){this.wheels=wheels;}});varTruck=Vehicle.extend({init:fun
我阅读了以下QA,它们都检查了使用原型(prototype)继承来模拟经典继承。GoodExampleofJavaScript'sPrototype-BasedInheritancejavascriptinheritanceUsinginheritancepatternsinJavaScript在野外没有一个原型(prototype)继承的工作示例吗?也许是模拟生命形式?除了那些由编程语言创建或未充分解决的问题之外,还有哪些问题可以从原始原型(prototype)继承中受益? 最佳答案 继承就是继承,因此您可以从两者中获得相同的基本
我想知道是否可以在javascript中继承构造函数。在下面的示例中,我希望Moveable将x和y参数分配给this.x和this.y分别是我在Sprite中定义的。此外,在不创建祖先安装的情况下定义原型(prototype)的最佳方式(但仍然简短且可读)是什么?最好在类本身中分配它,而不是像我现在这样在外部范围内分配它:functionSprite(x,y){this.x=x?x:0;this.y=y?y:0;this.getPos=function(){return{x:this.x,y:this.y};};}functionMoveable(x,y){}Moveable.pro
我正在使用从Backbone改编而来的扩展函数(除了为符合我雇主的命名约定而进行的一些更改外,它们完全相同)来实现原型(prototype)继承。设置以下结构后(下面大大简化)我得到一个无限循环。Graph=function(){};Graph.extend=myExtendFunction;Graph.prototype={generateScale:function(){//dostuff}}//baseclassdefinedelsewhereUsageGraph=Graph.extend({generateScale:function(){this.constructor._s
我被要求将我们的一些PHP代码移植到JavaScript,以便我们的更多逻辑在客户端运行。我想要的是一个简单的例子来展示:包含两个类(“Master”和“Slave”)的命名空间(“Package”)“Master”类有一个属性“p”、一个函数“m”和一个采用单个参数设置“p”初始值的构造函数“Slave”类从“Master”类继承了“p”、构造函数和“m”我不介意使用某种现有框架,但它必须是轻量级的——理想情况下不超过200LOC(未缩小)。这是我的尝试,FWIW:varPackage={};Package.Master=function(pValue){this.p=pValue;
我正在尝试为一个对象浏览器编写一个BackboneView,该View旨在在具有不同对象类型和略有不同操作的多个地方实现。我曾尝试简单地在我的浏览器中扩展主干View,然后在我的实现中扩展浏览器,但是这给我留下了一些共享的属性。这是一个不受欢迎的效果,因为数据会附加到每个浏览器创建的所有实现中。有人可以阐明解决此问题的方法或替代解决方案吗?以下是一些代码示例,可让您更好地了解它的当前状态:varBrowserView=Backbone.View;_.extend(BrowserView.prototype,Backbone.View.prototype,{className:'brow
我一直在研究Javascript中的设计模式并找到了http://tcorral.github.com/Design-Patterns-in-Javascript/Template/withoutHook/index.html成为一个很好的来源。谁能解释一下使用ParentClass.apply(this)的意义varCaffeineBeverage=function(){};varCoffee=function(){CaffeineBeverage.apply(this);};Coffee.prototype=newCaffeineBeverage();PS:我试着评论Caffein
我想编写一些扩展DOM节点的Javascript类(这样我就可以将我的类的实例直接插入到DOM中),但是很难找到我应该从哪个类/原型(prototype)继承。例如:functionmyExtendedElement(){this.superclass=ClassA;this.superclass();deletethis.superclass;}但是ClassA应该是什么? 最佳答案 这样做不是一个好主意。首先,要从DOM元素继承,您需要有权访问该元素的原型(prototype)。问题是并非所有浏览器都提供对DOM元素原型(pro