草庐IT

Prototype

全部标签

javascript - 将数组作为(多)集合进行比较

我正在寻找一种有效的方法来确定两个数组是否以任何顺序包含相同数量的相等元素(在==意义上):foo={/*someobject*/}bar={/*someotherobject*/}a=[1,2,foo,2,bar,2]b=[bar,2,2,2,foo,1]sameElements(a,b)-->true附言。请注意,几乎线程中的每个解决方案都使用===而不是==进行比较。不过这对我的需求来说很好。 最佳答案 更新5我发布了一个新的answer用不同的方法。更新我扩展了code可以通过reference或equality检查只需将t

javascript - 在 TypeScript 中扩展基本类型,错误 : "_this is not defined..."

我正在尝试用TypeScript重写我的一些JavaScript代码。其中一些代码引用了我添加到字符串对象原型(prototype)的扩展。String.prototype.format=function(){varformatted=this;for(vari=0;i然而,使用类型脚本添加这个非常具有挑战性。我见过这样的例子,您声明一个基本接口(interface)的扩展,然后将一个函数分配给原型(prototype)以匹配该接口(interface)并提供您的功能。像这样...interfaceString{showString:()=>string;}String.prototy

javascript - 如何在原型(prototype)函数中访问javascript对象变量

我有以下javascriptfunctionperson(){//privateVariablevarfName=null;varlName=null;//assignvaluetoprivatevariablefName="Dave";lName="Smith";};person.prototype.fullName=function(){returnthis.fName+""+this.lName;};varmyPerson=newperson();alert(myPerson.fullName());我正在尝试了解javascript中面向对象的技术。我有一个简单的人对象,并在其

Javascript 原型(prototype)属性无法按预期使用数组和对象字段

我使用以下代码得到了意想不到的结果:varTestModel,u,u2;functionTestModel(){}TestModel.prototype.a=null;TestModel.prototype.b=[];u=newTestModel();u.a=1;u.b.push(1);u2=newTestModel();u2.a=2;u2.b.push(2);console.log(u.a,u.b);//outputs:1[1,2]console.log(u2.a,u2.b);//outputs:2[1,2]令我惊讶的是u.b和u2.b包含相同的值,尽管TestModel的每个实例都

javascript - javascript中的原型(prototype)继承概念作为基于原型(prototype)的语言

你知道Javascript是一个prototype-basedprogramminglanguage.我读过一些关于Javascript及其原型(prototype)继承概念的书籍,但是:“如果你不能向一个6岁的child解释它,那么你自己真的不明白。”。好吧,我试图向一个22岁的friend解释JavaScript原型(prototype)概念,但完全失败了!你会如何向一个对该主题异常感兴趣的6岁child解释它?我在StackOverflow中看到了一些例子,但没有帮助。 最佳答案 经典继承是关于扩展事物的类型。假设您有一个类,

Javascript "abstract method"

我的术语有点不对,所以请在必要时随意更正。我想在javascript和“基类”中重载一个函数,以利用重载方法和继承类来访问基类方法。到目前为止,我想出了一个(有效的)jquery.extend()和对象文字的组合,但这看起来并不漂亮。我想知道是否有更好的方法(可以使用jquery)。varBase=newfunction(args,m){$.extend(this,m);varself=this;this.bar=function(){self.foo();}this.foo=function(){self.blah();}this.dosomething=function(){}};

javascript - 字符串原型(prototype)修改自身

据我所知,不可能以这种方式从自身修改对象:String.prototype.append=function(val){this=this+val;}那么是不是根本不可能让一个字符串函数修改自己呢? 最佳答案 String基元是不可变的,它们在创建后不能更改。这意味着其中的字符可能不会更改,并且对字符串的任何操作实际上都会创建新字符串。也许您想实现某种字符串生成器?functionStringBuilder(){varvalues=[];return{append:function(value){values.push(value);

javascript - 在基于原型(prototype)继承的语言中使用类

followinganswertothisquestion很好地解释了经典继承和原型(prototype)继承之间的区别。我很想了解这一点,因为我开始使用Java,但后来转向了Javascript。在他的回答中,他针对原型(prototype)继承指出,“所有关于类的业务都消失了。如果你想要一个对象,你只需编写一个对象。”但是有这么多文档和questions关于如何在Javascript中“编写类”。为什么要插入这种语言成为它不是的东西。我正在寻找在JS应用程序中使用类在这种原型(prototype)语言中更明智的情况的具体示例,以及笨拙地将方钉插入圆孔的好处。正如Aravind所说,

javascript - 我如何遍历 Array.prototype 函数

我想将所有数组函数包装在数组对象中,但在控制台中>>>Array.prototype[]>>>[].prototypeundefined但是当我在控制台中键入Array.prototype时,它会在自动完成中显示所有函数,我如何才能获得这些函数?它们藏在哪里? 最佳答案 你的意思是:vararrObj=Object.getOwnPropertyNames(Array.prototype);for(varfuncKeyinarrObj){console.log(arrObj[funcKey]);}

javascript - 为什么重置原型(prototype)不会从对象中删除属性?

我试图了解javascript原型(prototype)设计和可能的继承,但我确实遗漏了一些东西。让我们从简单的构造函数(函数Counter())开始,添加简单的属性和对象实例化:functionCounter(){this.a="first";};Counter.prototype.b="second";varcounter=newCounter();此时,counter.a返回“first”,counter.b返回“second”,counter.c当然是undefined这都是可以理解的。让我们向构造函数的原型(prototype)添加另一个属性:Counter.prototyp