草庐IT

javascript - 在 Javascript ES6 的子类中扩展父类方法

我想在父类中扩展子类的特定方法的功能。我还在习惯ES6中的OOP,所以我不确定这是否可行或违反规则。我正在寻找这样的东西:classParent{constructor(elem){this.elem=elem;elem.addEventListener((e)=>{this.doSomething(e);});}doSomething(e){console.log('doingsomething',e);}}classChildextendsParent{constructor(elem){//setsupthis.elem,eventlistener,andinitialdefin

javascript - 有没有办法在父类中获取子类的名称?

我正在尝试在其父类(superclass)(A)中打印出类B或C的名称。有没有办法从上下文中以某种方式推断出这一点?我是否必须将名称作为参数传递到super中,或者有更好的方法吗?classA{constructor(){console.log(klass_name)//klass_nameissomecodetogetthenameofclassB,C}}classBextendsA{constructor(){super();}}classcextendsA{super();} 最佳答案 是的,您可以通过两种方式在您显示的位置访

JavaScript 对象子类

我想创建继承自父类(superclass)A的子类B。我的代码在这里:functionA(){this.x=1;}B.prototype=newA;functionB(){A.call(this);this.y=2;}b=newB;Console.log(b.x+""+b.y);运行时,显示B未定义。 最佳答案 您必须在尝试访问其原型(prototype)之前定义B构造函数:functionA(){this.x=1;}functionB(){A.call(this);this.y=2;}B.prototype=newA;b=newB

javascript - 你如何在 JavaScript 中进行继承而不在子类的所有实例之间共享父类(super class)的同一个实例?

我注意到每个关于如何进行JavaScript继承的教程都是这样做的:SubClass.prototype=newSuperClass();但这将创建父类(superclass)的单个实例并在子类的所有实例之间共享它。问题是我想将参数传递给父类(superclass)构造函数,这些构造函数源自传递给子类的参数。在Java中,这将像这样完成:classSubClassextendsSuperClass{publicSubClass(Strings){super(s);}}我试过这样做:functionSubClass(args){this.constructor.prototype=new

javascript - 如何访问子类中 getter 的父类(super class)值?

在派生类中访问getter的super值似乎不起作用:classFoo{private_message:string="Hello,";publicgetMessage():string{returnthis._message;}}classBarextendsFoo{publicgetMessage():string{returnsuper.Message+"World";}}varsnafu:Bar=newBar();document.write(snafu.Message);//Expected:"Hello,World"//Actual:"undefinedWorld"如何正确

javascript - Fabric.js 子类化 fabric.Group - 错误 : "Cannot read property ' async' of undefined"when load from JSON

有以下问题:尝试继承fabric.Group:varCustomGroup=fabric.util.createClass(fabric.Group,{type:'customGroup',initialize:function(objects,options){options||(options={});this.callSuper('initialize',objects,options);this.set('customAttribute',options.customAttribute||'undefinedCustomAttribute');},toObject:functi

javascript - 向在 web.list.Column 的子类中创建的 DOM 元素添加回调

我正在尝试修改web_tree_image小部件。我不希望在列中显示小图像,而是希望在悬停或单击时显示更大的图像。为了实现这一点,我试图在小部件呈现后添加回调,方法是覆盖start函数,如thedocumentation中所述。.因此我将以下代码添加到web_tree_image.js:openerp.web_tree_image=function(instance){instance.web.list.Image=instance.web.list.Column.extend({//[...]start:function(){console.log("startcalled");//

javascript - 在 Fabric.js 中,如何修改对象类以便所有子类都具有新的自定义属性?

我正在寻找一种方法来扩展具有自定义属性的基础fabric.Object类,我可以保存到JSON并从JSON加载,这将一直传播到各种子类。特别是我想存储一个深度属性,这样当我从JSON加载对象时,我将能够为对象添加适当的视差。我想解决方案将包括修改fabric.Object.prototype。但我仍在学习如何使用原型(prototype)。以下是我尝试过的一些例子:http://www.sitepoint.com/fabric-js-advanced///createarectangleobjectvarrect=newfabric.Rect({left:100,top:100,fil

javascript - 使用 .prototype 和 __proto__ 创建子类

我最近一直在通过编写一些gnomeshell扩展来学习javascript,因此我对Javascript的理解受到了我在gnome-shelljavascript源代码中观察到的示例的影响。我有一种感觉,我对类的理解是错误的,只是想得到一些澄清。我已经编写了一些自己的子类,并且在每种情况下,我都通过遵循gnome-shelljavascript源代码中的类似代码来简单地定义它们:Subclass=function(){this._init.apply(this,arguments);}Subclass.prototype={__proto__:Superclass.prototype,

javascript - 带有子类的构造函数中的 Object.freeze

如果我希望我的类是不可变的,我知道我可以使用Object.freeze().现在,如果我希望我的对象在构造后不可变,我会放置Object.freeze(this)作为最后一行进入我的构造函数。但是现在,如果我想对其进行子类化,则无法添加更多参数,因为我无法调用this。打电话前super并在调用super后它是不可变的:classA{constructor(x){this.x=xObject.freeze(this)}}classBextendsA{constructor(x,y){this.y=y//nope.No"this"before"super"super(x)this.y=y