草庐IT

Inheritance

全部标签

JavaScript 继承 : When where's my derived members?

看看下面的代码:functionPrimate(){this.prototype=Object;this.prototype.hairy=true;}functionHuman(){this.prototype=Primate;}newHuman();当您检查newHuman()时,没有hairy成员。我希望会有一个。有没有其他方法可以让我从Primate继承?涉及Object.create()的内容(ECMAScript5适合在我的场景中使用)? 最佳答案 在编写代码时,使用newHuman()创建的对象将具有一个名为protot

javascript - 为什么在 Javascript 中属性写入不引用原型(prototype)链?

我已经盯着这个答案看了一段时间,但我无法理解它:https://stackoverflow.com/a/23699009/3658800.总结:只有属性读取搜索原型(prototype)链,而不是写入。所以当你设置myObject.prop='123';它不查找链,但是当你设置myObject.myThing.prop='123';在那个写操作中有一个微妙的读操作,它试图在写入它的prop之前查找myThing。这就是为什么从子对象写入object.properties会得到父对象的原因。我基本上是在要求某人详细说明这个“微妙的阅读”操作。myObject.myThing是否首先求值,

javascript - 为什么 console.log() 不显示从 Object.create 继承的属性?

我在尝试利用基础对象上的Object.defineProperty()时遇到了问题。我想使用Object.create()从该对象继承属性,然后在派生对象(可能从那里继承)中定义更多属性。我应该指出,我的目标是node.js。这是一个例子:varBase={};Object.defineProperty(Base,'prop1',{enumerable:true,get:function(){return'prop1value';}});Object.defineProperty(Base,'prop2',{enumerable:true,value:'prop2value'});Ob

javascript - Javascript 中的继承

我正在研究Javascript中的继承概念,我正在看的教程使用了这段代码://definetheStudentclassfunctionStudent(){//CalltheparentconstructorPerson.call(this);}//inheritPersonStudent.prototype=newPerson();//correcttheconstructorpointerbecauseitpointstoPersonStudent.prototype.constructor=Student;我的问题是,为什么有必要同时调用父构造函数Person.call(this

javascript - 从 native 对象继承

我似乎遗漏了一些关于Javascript中使用native对象的构造函数链继承的信息。例如:functionErrorChild(message){Error.call(this,message);}ErrorChild.prototype=Object.create(Error.prototype);varmyerror=newErrorChild("Help!");为什么myerror.message在这些语句之后被定义为""?我希望Error构造函数将其定义为“帮助!”(并覆盖Error.prototype.message的默认值),就像我在做的那样:varmyerror=new

javascript - Web 开发人员专业 JavaScript 中的 "Parasitic Combination Inheritance"

Web开发人员专业JavaScript,第三版,NicholasC.Zakas(Wrox,2012年,第210-215页描述了使用以下函数的“寄生组合继承”:functioninheritPrototype(subType,superType){varprototype=object(superType.prototype);prototype.constructor=subType;subType.prototype=prototype;}我还没有弄清楚将subType分配给prototype.constructor做什么或应该做什么。除非我遗漏了什么,否则我使用示例代码得到的输出是

javascript - 扩展 JavaScript 错误/异常

我正在开发一个小型JS库,并在那里使用自定义错误异常。所以,我决定以这种方式从原生JavascriptError对象继承它们(ORLY?):varMyError=function(){Error.prototype.constructor.apply(this,arguments);};//InheritwithoutinstantiatingErrorvarSurrogate=function(){};Surrogate.prototype=Error.prototype;MyError.prototype=newSurrogate();//Addsomeoriginalmethod

javascript - 覆盖继承的原型(prototype)方法并在新方法中调用原始方法

在下面的代码中,如何访问B.prototype.log中的A.prototype.log?functionA(){}A.prototype.log=function(){console.log("A");};functionB(){}B.prototype=Object.create(A.prototype);B.prototype.constructor=B;B.prototype.log=function(){//callA.prototype.loghereconsole.log("B");};varb=newB();b.log();我知道我可以只写A.prototype.log

javascript - 为什么 foo.hasOwnProperty ('__proto__' ) 等于 false?

varfoo={bar:5}为什么foo.hasOwnProperty('__proto__')等于false?它不能来自原型(prototype)链中更高层的任何对象,因为它特定于这个对象。编辑:有些回答说是在Object.prototype上。但我不明白这是怎么回事。我的问题不是它在哪里,而是为什么它不在它应该在的地方。例如:vara=newFoo();varb=newBar();//FooinheritsfromBar那么a.__proto__不应该等于b.__proto__吗?因为他们都在读取Object.prototype吗? 最佳答案

javascript - JS : Confusion about inheritance

我通过C++、Java等语言熟悉OOP概念。现在我正在尝试将JavaScript作为一种爱好来学习,主要是出于对WebGL的兴趣。但是我在基于原型(prototype)的继承方面遇到了麻烦。假设我有一个基类,它在构造函数中接受一个参数。我需要扩展它。我这样做的方式如下所示。functionBase(n){this._n=n;}Base.prototype.print=function(){console.log(this._n);}functionDerived(n){Base.call(this,n);}Derived.prototype=newBase;Derived.protot