草庐IT

prototype-programming

全部标签

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

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

Javascript 原型(prototype)语法

这是有效的Javascript语法吗?它有什么作用?Parser.prototype={//...getcurrentState(){returnthis.state[this.state.length-1];},//...}参见https://github.com/LearnBoost/stylus/blob/master/lib/parser.js.谢谢! 最佳答案 它定义了一个getter:Bindsanobjectpropertytoafunctionthatwillbecalledwhenthatpropertyisloo

javascript - 为什么 prototyping Function 不影响 console.log?

我制作了Function原型(prototype),使其具有getBody函数:Function.prototype.getBody=function(){//Getcontentbetweenfirst{andlast}varm=this.toString().match(/\{([\s\S]*)\}/m)[1];//Stripcommentsreturnm.replace(/^\s*\/\/.*$/mg,'');};参见here获取更多信息。我试过这样测试:console.log(console.log.getBody.getBody());但收到错误:TypeError:cons

javascript - IE8 Array.prototype.slice : 'this' is not a JavaScript object

我只在IE8中收到此错误消息,我不知道如何转换现有函数以兼容IE8。_initEvents:function(){varself=this;Array.prototype.slice.call(this.menuItems).forEach(function(el,i){vartrigger=el.querySelector('a');if(self.touch){trigger.addEventListener('touchstart',function(ev){self._openMenu(this,ev);});}else{trigger.addEventListener('cl

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 - 构造函数中的 "use strict"是否扩展到原型(prototype)方法?

我试图弄清楚“usestrict”的定义是否扩展到构造函数的原型(prototype)方法。示例:varMyNamespace=MyNamespace||{};MyNamespace.Page=function(){"usestrict";};MyNamespace.Page.prototype={fetch:function(){//doIneedtouse"usestrict"hereagain?}};根据Mozilla您可以将其用作:functionstrict(){"usestrict";functionnested(){return"AndsoamI!";}return"Hi

javascript - 等效于 ES6 生成器的 Function.prototype.apply

我正在尝试构建可链接的JavaScriptAPI。(我在启用了迭代器和生成器的最新版本的V8中运行它。)在下面的示例中,setState是可链接的。它还允许您调用它而无需显式创建新的Builder实例。chain()辅助函数处理并自动返回该实例,因此setState不必担心它。(一流的功能为赢!)除了可链接的方法之外,我还需要一些“终止”方法。更重要的是,这些“终结者”是发电机。生成器生成Builder实例的内部状态。问题是我无法找出与生成器的f.apply(that,arguments)等效的方法。我希望能够在运行时调用生成器并设置其this上下文,就像您可以使用Function.p

javascript - 在函数实例中使用原型(prototype)添加值

这个问题在这里已经有了答案:HowdoesJavaScript.prototypework?(26个答案)关闭7年前。我的代码中有一个构造函数。我已经创建了那个构造函数的实例。在新创建的实例中,我想通过使用原型(prototype)方法添加值或功能。但是我在执行此操作时遇到错误。这是我的代码fiddlefunctiona(){this.d=9}a.prototype.one=1;a.prototype.two=2;varj=newa();j.prototype.three=3;console.log(j)

javascript - 扩展 String.prototype 性能表明函数调用快 10 倍

我想用一些实用方法扩展String对象原型(prototype)。它有效,但性能出奇的低。将字符串传递给函数比重写执行相同操作的String.prototype方法快10倍。为了确保这真的发生了,我创建了一个非常简单的count()函数和相应的方法。(我正在试验,并创建了该方法的三个不同版本。)functioncount(str,char){varn=0;for(vari=0;i结果:func:705msproto:10011msproto-reuse:10366msproto-var:9703ms如您所见,差异是巨大的。下面证明了方法调用的性能可以忽略不计,并且函数代码它自己对于方法

javascript - 为什么 CSS3Pie + Prototype 1.6.1 会导致 Internet Explorer 8 崩溃

我试图理解为什么Css3Pie与Prototype1.6.1一起使用会导致InternetExplorer8崩溃。为什么会这样?相关信息CSS3Pie[sourcecode]是一种InternetExplorer行为(htc),它添加了对CSS3属性(如边框半径、渐变等)的支持。崩溃仅发生在IE8中,不会发生在IE7或更早版本中。崩溃只发生在Prototype1.6.1[sourcecode],不是原型(prototype)1.6.0.x崩溃在页面加载时立即发生,我什至无法与页面交互。开发人员知道该问题,但由于他认为这是一个原型(prototype)问题(可能是),他可能并不急于修复它