草庐IT

Inheritance

全部标签

Javascript 命名空间

我希望将我的javascript拆分成不同的文件并为每个文件提供一个像这样的“子”命名空间,从而使我的javascript更加模块化。subA.jsif(typeofex=="undefined"){varex={};}ex.subA=function(){//allfunctionsofsubAhere}subB等也一样目前我有1个文件,ex.jsvarex=(function(){//privatevars/funcsreturn{//publicvars/funcs}})();看起来我应该将我的大部分功能移动到subA.js和subB.js,但仍然在开始时包括ex.js,然后是s

javascript - 使用 ES6 类继承链的 instanceof 不起作用

使用ES6class语法,我想知道当有多个继承链时,为什么instanceof运算符对继承链不起作用?(optionalread)Howinstanceofoperatorworks?InobjinstanceofConstructor,theinstanceofoperatorchecksifthe'prototype'propertyoftheConstructorfunctionispresentintheprototypechainoftheobj.Ifitispresent,returntrue.Otherwise,false.在下面的代码片段中,BTError继承自Erro

javascript - 为什么 a.y 在这里未定义?

functionA(){}A.prototype.x=10;vara=newA();alert(a.x);//10A.prototype={x:20,y:30};alert(a.y)//undefined为什么它委托(delegate)给a.x的旧原型(prototype)而不是新的一个?为什么a.y抛出undefined是在prototype中设置的? 最佳答案 发生这种情况是因为当您设置了A.prototype=obj您没有向a继承的Object添加属性,而是创建了一个全新的对象作为A.prototype而这个不是由a继承的考虑

javascript - JS 继承 : calling the parent's function from within the child's function

JS对象模型肯定有不明白的地方。来自这些资源:PrototypesBasicOOPinJS-InheritanceObject.create()我收集了我认为或认为是对象模型的准确心理表征。在这里:所有对象都有一个属性,文档将其称为[[Prototype]]。[[Prototype]]可以被认为是对对象父对象的引用。更准确地说:Thereferencetothe[parent's]prototypeobjectiscopiedtotheinternal[[Prototype]]propertyofthenewinstance.(source1)您可以使用Object.getProtot

javascript - MyClass.prototype = new Object() 和 MyClass.prototype = Object 的区别

谁能告诉我,在Javascript中,两者之间的区别在哪里MyClass.prototype=newObject();//or...={}和MyClass.prototype=Object;是?如果结果没有差异,哪一个是最佳实践方式? 最佳答案 你的前两个例子是完全等价的:MyClass.prototype=newObject();//emptyobjectMyClass.prototype={};//emptyobject您的第三个示例无效,因为您正在为MyClass.prototype分配对Object的引用构造函数,它是一个函

javascript - 了解原型(prototype)继承

我画了下图来演示对象是如何继承的(函数构造函数标记为蓝色,从这些构造函数创建的对象标记为绿色):下面是创建这种层次结构的代码:functionFigure(){}functionRect(){}Rect.prototype=newFigure();functionSquare(){}Square.prototype=newRect();functionEllipse(){}Ellipse.prototype=newFigure();functionCircle(){}Circle.prototype=newEllipse();现在我想检查newSquare()是否继承自Rect,所以这

javascript - 调用基本构造函数 - Javascript

有两种方法可以在子进程中调用父构造函数。varA=functionA(){this.x=123;};varB=functionB(){//1.calldirectlyA.call(this);//2.callfromprototypeA.prototype.constructor.call(this);};B.prototype=Object.create(A.prototype);B.prototype.constructor=B;有没有一种情况比另一种更安全/更好,或者它们总是等价的? 最佳答案 直接使用基础构造函数总是更好,原

javascript - 如何在类声明上实现伪经典继承?

注意:正如答案所言,由于问题和我的评论中描述的一些问题,问题中提出的代码确实NOT真正实现了继承(否则它将成为答案而不是问题..)。它按预期工作是继承的假冒(甚至不是原型(prototype))。摘要简而言之,让它像我们正在编写一种通用的OO语言而不是javascript一样,但要保持继承是正确的。故事Object.create是实现原型(prototype)继承的好方法,但对于类型的大脑和新粉丝来说有点困惑。我们可以通过多种方式编写javascript代码,更像是使用伪经典模式编写其他OO语言。由于它是伪-经典,我们必须正确处理javascript的底层原型(prototype)继承

javascript - 在类函数中访问 JavaScript 类变量

我有这个:functionFilterSelect(select,search){this.select=select;this.search=search;//Getthecurrentlistoptionsthis.options=this.select.options;//Wheneverthetextofthesearchboxchanges,dothisthis.search.onkeyup=function(){//Clearthelistwhile(this.select.options.length>0){this.select.remove(0);}}}在onkeyu

javascript类继承自Function类

我喜欢在javascript中,我可以创建一个函数,然后向该函数添加更多方法和属性myInstance=function(){return5}myInstance.attr=10我想创建一个类来生成这些对象。我假设我必须从Function基类继承。换句话说,我想:varmyInstance=newmyFunctionClass()varx=myInstance()//x==5但我不知道如何创建myFunctionClass。我尝试了以下方法,但它不起作用:varmyFunctionClass=function(){Function.call(this,"return5")}myFunc