草庐IT

Wstrict-prototypes

全部标签

javascript - Regex.prototype.exec 在搜索的第二次迭代中返回 null

这个问题在这里已经有了答案:WhydoesaRegExpwithglobalflaggivewrongresults?(7个答案)关闭6年前。用例我想在一个字符串中搜索多个匹配项。每个匹配最终都链接到对象数组中的对象属性。找到匹配项后,该匹配项将替换为对象中的另一个属性。问题是代码将始终在第二个匹配项上返回null。测试用例这是我正在使用的测试用例。为了简化问题,我只是将所有匹配项替换为数字5,但请注意,最终代码会将匹配项替换为一个变量值。测试代码下面是我用来测试和调试问题的代码。有趣的是,如果我更改varstr='5+QUESTION_2',QUESTION_2会成功替换为5。本质上

JavaScript:控制台中显示的原型(prototype)函数

我刚刚注意到,当我记录当前正在处理的对象的一个​​实例时,我在它的属性之后看到了原型(prototype)函数(它只有一个)。这让我觉得我做错了什么。这就是我设置原型(prototype)的方式。MF=function(x){if(!(thisinstanceofMF))returnnewMF(x);this.node=x;}MF.prototype={show:function(display){display?this.node.style.display=display:this.node.style.display='block';},hide:function(){this.

javascript - 在 d3.js 中改变对象的 [[prototype]] 的警告?

我正在使用d3.js进行数据可视化。我收到下图中显示的警告。有谁知道为什么会这样,我该如何解决?错误中显示的消息如下mutatingthe[[Prototype]]ofanobjectwillcauseyourcodetorunveryslowly;insteadcreatetheobjectwiththecorrectinitial[[Prototype]]valueusingObject.create 最佳答案 Doesanyonehavetheideawhyisthishappening看起来是d3的错。他们似乎用它来子类化数

javascript - foo.toString() 和 Object.prototype.toString.call(foo) 有什么区别?

如果我定义一个函数:functionfoo(){alert(this.x);}我可以通过调用foo函数的toString方法来打印函数定义。console.log(foo.toString())输出:functionfoo(){alert(this.x);}如果我然后运行console.log(Object.prototype.toString.call(foo))输出:"[objectFunction]"令我惊讶的是输出结果不同。我认为这两种形式是等价的吗?即foo函数从顶级Object继承了toString方法并使用Object.prototype.toString.call(fo

javascript - 扩展运算符不会复制原型(prototype)吗?

以下代码似乎没有复制对象的原型(prototype)。constanimalProto={eat(){//functionbody},sleep(){//functionbody},}functionanimalCreator(proto,attributes){return{...Object.create(proto),...attributes}}constcat=animalCreator(animalProto,{name:'garfield'})cat.eat()//thisisanerror;functionisnotdefined;itdoesn'tappeartoli

javascript - 在 javascript 中的对象扩充期间什么时候应该使用 "prototype"?

我对javascript中的“原型(prototype)”概念感到困惑。当我定义一个对象时,以下两种方法似乎都有效:myObject={};myObject.prototype.method1=function(){...};myObject.prototype.method2=function(){...};myObject.prototype.method3=function(){...};和...myObject={};myObject.method1=function(){...};myObject.method2=function(){...};myObject.method

javascript - 为什么要使用带参数的 Array.prototype.slice.call

我正在使用apply调用一个方法,但我不知道我将传递多少个参数:目前我的代码是这样的:selectFolder:function(e){e.preventDefault();this.addSelectedClass.apply(this,Array.prototype.slice.call(arguments));},我使用Array.prototype.slice的唯一原因是因为它在大多数示例中都是如此。为什么我不只是像这样传递参数:this.addSelectedClass.apply(this,arguments); 最佳答案

javascript - `this` 和 `prototype` 有什么区别? javascript 哎呀

这个问题在这里已经有了答案:Useof'prototype'vs.'this'inJavaScript?(15个答案)关闭8年前。在codecademy.com上学习javascript类(class)时,我变得有点困惑。首先我们学习了如何向类中添加方法:functionDog(breed){this.breed=breed;this.sayHello=function(){console.log("Hellothisisa"+this.breed+"dog");}};varsomeDog=newDog("goldenretriever");someDog.sayHello();然后我

javascript - "delete"- 恢复 native 函数不适用于已更改的原型(prototype),那怎么办?

如果你像这样改变原生函数:window.open=function(a,b,c){alert(2);}然后你就可以deletewindow.open它会恢复原来的功能,但是:如果你像这样改变它的原型(prototype):window.__proto__.open=function(a,b,c){alert(3);}然后delete不会做任何事情=\现在有什么办法恢复它吗? 最佳答案 当您将window.open更改为其他内容时,例如使用window.open='somethingelse';,然后您将隐藏原型(prototype)

javascript - 为什么要使用 Array.prototype.forEach.call(array, cb) 而不是 array.forEach(cb)?

我刚刚查看了今年ng-europesession的一些照片,并注意到一张幻灯片,我认为它可能显示了即将推出的Angular2的一些代码。请参见此处:(来源:https://plus.google.com/u/0/photos/+ThierryLAU/albums/6073085583895256529/6073092865671487010?pid=6073092865671487010&oid=105910465983441810901)我不明白的是:为什么此代码的作者使用Array.prototype.forEach.call(array,cb)而不是较短且(在我看来)等效的版本a