草庐IT

javascript - chromes "appendChild"真的那么慢吗?

我有一个框架,它完全使用document.createElement和document.appendChild生成应用程序的DOM。现在应用程序变得越来越大,我注意到Chrome需要比其他浏览器更长的时间来构建DOM。因此,我创建了以下性能测试:window.onload=function(){varnow=newDate().getTime();for(vari=0;i这个测试的结果很有意思:Chrome16:700+火狐9:560IE9:210歌剧11.60:51Chrome的完成时间是Opera的14倍多。这不仅仅是一个毫无意义的基准!我真的能在我的应用中感受到这种不同。Chro

javascript - 输入类型="submit",onclick处理程序调用this.form.submit(),并且不返回任何值

编辑:在考虑回答问题之前,请仔细阅读问题的所有内容。我既不是在生产代码中使用内联事件处理程序的可取性,也不是在实现我所引用的文章所promise的结果的最佳方法。这是关于Javascript语义和浏览器实现细节的问题,而不是关于最佳编码实践的问题。听起来像一场噩梦,对吗?但是我发现一些onlineadvice提倡这样做,以防止再次提交表单:撇开对内联事件处理程序的弊端的任何讨论,我在这里看到的问题是:标签的类型是"submit",因此提交其包含形式是其默认行为;onclick处理程序显式提交包含表单;onclick处理程序不返回false以防止默认行为(请参见1)。凭直觉,我认为单击此

javascript - 为什么卡住的 "enum"变慢了?

为了访问数组中的数据,我创建了一个类似于enum的变量,以便为字段提供人类可读的标识符。varcolumns={first:0,second:1};vararray=['first','second'];vardata=array[columns.first];当我发现Object.freeze时,我想将其用于枚举以使其无法更改,并且我希望VM能够利用此信息发挥其优势。事实证明,测试在Chrome和Node上变慢,但在Firefox上稍快(与通过数字直接访问相比)。代码可在此处获得:http://jsperf.com/array-access-via-enum以下是来自Node的基准测

javascript - Web 开发人员专业 JavaScript 中的 "Parasitic Combination Inheritance"

Web开发人员专业JavaScript,第三版,NicholasC.Zakas(Wrox,2012年,第210-215页描述了使用以下函数的“寄生组合继承”:functioninheritPrototype(subType,superType){varprototype=object(superType.prototype);prototype.constructor=subType;subType.prototype=prototype;}我还没有弄清楚将subType分配给prototype.constructor做什么或应该做什么。除非我遗漏了什么,否则我使用示例代码得到的输出是

javascript - 选择以 "data-"开头的元素

我如何使用计划javascript或jQuery选择每个具有以“data-”开头的属性的元素?我试过了$("[data-*"])但它不起作用。 最佳答案 这是一个非JQuery函数,它将执行您需要的操作:functiongetAllDataElements(){//getallDOMelementsvarelements=document.getElementsByTagName("*");//arraytostorematchesvarmatches=[];//loopeachelementfor(vari=0;i可以这样使用:v

javascript - ((?:[^\"])*) and ([^\"]*) 之间的正则表达式差异

这个正则表达式是可替换的有什么区别?((?:[^\"])*)([^\"]*)这个问题的背景:javascript所见即所得编辑器(tinymce)无法解析我的html代码在Firefox(23.0.1和25.0a2)中,但在Chrome中工作。我发现正则表达式是罪魁祸首:attrRegExp=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;我修改,替换((?:[^\"])*)与([^\"]*)和((?:[^\'])*)与([^\']*)生成的正则表达式在我的测试用例的两个浏

javascript - 为什么 "this"的值会改变。?

我正在学习javascript,我遇到了一个疑问。为什么“this”的值在第一个示例中未定义,但在第二个示例中打印正确。示例1:varmyNamespace={myObject:{sayHello:function(){console.log("nameis"+this.myName);},myName:"john"}};varhello=myNamespace.myObject.sayHello;hello();//"nameisundefined"示例2:varmyNamespace={myObject:{sayHello:function(){console.log("Hi!My

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 - 如何在 "before" Hook 中获取 Mocha 测试名称?

我正在尝试在beforeHook中获取当前的describe名称,如下所示:describe('increasing3times',function(){before(function(){console.log('testname');});...});我基本上想在before钩子(Hook)中检索'increasing3times'字符串。如何实现?谢谢! 最佳答案 下面是说明如何执行此操作的代码:describe("top",function(){before(function(){console.log("fulltitle

javascript - promise findOneAsync 变量 = {"isFulfilled":false ,"isRejected":false}?

利用Bluebird来PromisfyMongoose,我有一个Promise.map(带有一系列if/else的函数,用于遍历数组以查看是否存在引用文档,否则创建一个..将findOneAsync的产品分配给一个变量,然后将“variable._id”分配给正在制作的新文档(主要promise),控制台记录{"isFulfilled":false,"isRejected":假的这是一个片段:for(i=0;i这是一个日志:existingItem:{"isFulfilled":false,"isRejected":false}existingItem._id:undefined为什么