我刚刚开始阅读DouglasCrockford的“JavascriptTheGoodparts”,他在其中解释了增强基本类型。Function.prototype.addMethod=function(name,func){this.prototype[name]=func;returnthis;};执行此操作后,addMethod可用于所有基本对象,如String、Number等.这让我很困惑为什么我没有将它添加到Object.prototype时会发生这种情况?为什么将方法添加到Function.prototype会反射(reflect)在所有基本对象中?
我知道如何使用JSON来创建对象,但似乎没有办法使用JSON来创建特定对象类型的对象。这是一个对象的例子并创建它的一个实例:Person=function(){};Person.prototype={FirstName:null,GetFirstName:function(){returnthis.FirstName;}};//CreateaninstanceofthePersonObjectvarme=newPerson();me.FirstName="Chris";alert(me.GetFirstName());//alerttheFirstNameproperty现在,我想使用
我正在尝试拥有一个通用的“列表”类,它将具有:属性:项目-这将是一个“what-ever”的数组方法:Add()-这将是抽象的并由特定的“列表”对象实现方法:Count()-返回“项目”的数量然后创建将从“List”继承的子类://Class'List'functionList(){this.Items=newArray();this.Add=function(){alert('pleaseimplementinobject')}}//ClassCDList-whichinheritsfrom'List'functionCDList(){this.Add=function(Artist
我遇到了DouglasCrockfordsObject.create方法的一个特点,我希望有人能解释一下:如果我创建一个对象-比如“人”-使用对象字面量表示法,然后使用Object.create创建一个新对象-比如说“anotherPerson”-它继承了初始“人”对象的方法和属性。如果我随后更改第二个对象“anotherPerson”的名称值,它也会更改初始“person”对象的名称值。这只会在属性嵌套时发生,这段代码应该让您明白我的意思:if(typeofObject.create!=='function'){Object.create=function(o){functionF(
我是Javascript编程的新手,我正在从面向对象编程的Angular来处理我的第一个应用程序(实际上是一个游戏)(我知道js并不是真正的面向对象,但对于这个特定的问题,它对我来说更容易像这样开始)。我有一个“类”层次结构,其中最顶层(“事物”类)定义了相关事物(游戏中的附加项目)的列表。它由ThingA类继承,而ThingA类又由ThingA1和ThingA2类继承。最小的例子是:functionThing(){this.relatedThings=[];}Thing.prototype.relateThing=function(what){this.relatedThings.p
在DouglasCrockford的JavaScript:TheGoodParts中,他建议我们使用函数继承。这是一个例子:varmammal=function(spec,my){varthat={};my=my||{};//Protectedmy.clearThroat=function(){return"Ahem";};that.getName=function(){returnspec.name;};that.says=function(){returnmy.clearThroat()+''+spec.saying||'';};returnthat;};varcat=functi
我怎样才能让子类覆盖基类的特权方法?如果不可能,是否有另一种方法可以实现我在下面的简单代码示例中尝试实现的目标?我无法将基类函数parseXML()转换为公共(public)函数,因为它需要访问私有(private)变量functionBaseClass(){varmap={};//IcannotmakethisfunctionpublicBECAUSEitaccesses&changesprivatevariablesthis.parseXML=function(key,value){alert("BaseClass::parseXML()");map[key]=value;}}fu
有很多文章和帖子解释了JavaScript继承的工作原理,但为什么JavaScript使用原型(prototype)继承而不是经典继承来实现?我喜欢JavaScript,所以我并不是说它是坏事...我只是好奇。 最佳答案 以下是BrendanEich对发生的事情的看法:https://brendaneich.com/2008/04/popularity/AsI'veoftensaid,andasothersatNetscapecanconfirm,IwasrecruitedtoNetscapewiththepromiseof"doi
我正在使用javascript和html5编写一个简单的平台游戏。我以面向对象的方式使用javascript。为了让继承工作,我使用了以下内容;//http://www.sitepoint.com/blogs/2006/01/17/javascript-inheritance/functioncopyPrototype(descendant,parent){varsConstructor=parent.toString();varaMatch=sConstructor.match(/\s*function(.*)\(/);if(aMatch!=null){descendant.prot
我在javascript中遇到过原型(prototype)继承。我想要实现的是方法的概述,当继承时必须实现/定义这些方法。我想知道这是否可行,如果可行,如何实现。 最佳答案 JavaScript真的没有这样的东西。正如你所说,JavaScript是prototype-oriented.正如其他答案所说,当然,你可以模拟这个。但我看不出这样做的充分理由。为什么面向对象的程序员使用接口(interface)和抽象类?Astraction和decoupling.这些允许你做各种各样的好事,比如编写消耗(作为参数)和产生(返回)具有抽象类型