jjzjj

Prototype

全部标签

javascript - 为什么在进行 Javascript 继承时要创建一个临时构造函数?

为什么goog.inherits来自GoogleClosureLibrary看起来像这样:goog.inherits=function(childCtor,parentCtor){functiontempCtor(){};tempCtor.prototype=parentCtor.prototype;childCtor.superClass_=parentCtor.prototype;childCtor.prototype=newtempCtor();childCtor.prototype.constructor=childCtor;};而不是goog.inherits=functio

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 - 关于 JavaScript 工作原理的几个问题

我最近一直在深入研究JavaScript以完全理解这门语言,并且有一些我似乎无法找到答案的烦人问题(特别是处理面向对象编程)。假设以下代码:functionTestObject(){this.fA=function(){//dostuff}this.fB=testB;functiontestB(){//dostuff}}TestObject.prototype={fC:function{//dostuff}}函数fA和fB有什么区别?它们在范围和潜在能力上的表现是否完全相同?这只是惯例,还是一种技术上更好或更合适的方法?如果在任何给定时间只有一个对象的实例,向原型(prototype)

javascript - 为什么构造函数不是构造函数?

考虑以下片段:​f=function(){};f.prototype={};thing=newf;我惊讶地发现thing.constructor是Object()。(参见fiddlehere。)为什么thing.constructor不是函数f? 最佳答案 因为您已经将f的原始prototype对象完全替换为普通对象。它是原始的prototype对象,它通过.constructor属性保存对f的引用。使用对象字面量语法创建的对象的构造函数将是Object构造函数。要取回它,您需要手动将其放在那里。f=function(){};f.p