草庐IT

new_raw_data

全部标签

使用 `new Function()` 优化 Javascript

在阅读文档时,我发现了一个可以大大提高javascript性能的简单优化。原代码:functionparseRow(columns,parser){varrow={};for(vari=0;i优化代码:varcode='return{\n';columns.forEach(function(column){code+='"'+column.name+'":'+'parser.readColumnValue(),\n';});code+='};\n';varparseRow=newFunction('columns','parser',code);在这里找到:https://github

javascript - React JS this.props.data 未在子组件的 getInitialState 中定义,即使它是在渲染中定义的(并且在父级中定义)

场景:在同一个祖父包装器(->)中重用组件(->)以实现代码重用。首先,我分配了一个数据数组并循环以重新使用子组件(->)。对于第二个,它只是一个对象(具有与数组对象相同的属性),我直接在渲染中分配它(不需要this.props.data.map循环,因为已经只有一个对象)。问题:对于阵列,一切都按要求工作。this.props.data传递给child,状态通过各种事件更新,一切都很好。然而,对于单个对象,在之前一切正常.即使this.props.data包含有效值并正确分配给child组件,在的getInitialState,它莫名其妙地未定义(或设置为的getInitialSta

javascript - canvas.toDataUrl() 返回 'data:,'

我正在尝试调整图像大小并使用canvas.toDataUrl()取回base64字符串表示形式。我的代码如下(见下文)。我的问题是,每次我第一次启动它时,它都会返回“data:,”。然后,当我重新调整大小(使用按钮调用)时,它工作正常,并返回一个非空的base64字符串。这是怎么回事?functiondrawAndResizeFunction(images)varqDraw=$q.defer();//1drawCanvasWrapper().then(function(canvasData){qDraw.resolve(canvasData)});//2functiondrawCanv

javascript - 多次复制 Canvas : clone the canvas or copy the image data?

我的一个界面元素正在使用HTML5渲染元素和关联的JavaScriptAPI。此元素在同一屏幕上的多个位置以及整个应用程序的多个屏幕上使用。在需要的地方显示它的最有效方法是什么?我的第一个想法是绘制到主Canvas上,然后将其复制并插入页面中需要的位置。主Canvas可能是这样的:varmaster=$('').attr({width:100,height:100}),c=master[0],ctx=c.getContext("2d");ctx.fillStyle="#FF0000";ctx.fillRect(0,0,150,75);假设我想复制这些div中的Canvas容器:....

javascript - 嵌套 forEach : Uncaught TypeError: data. forEach 不是函数

我不想使用任何for循环或任何常规循环,我正在尝试使用forEach但出现错误UncaughtTypeError:data.forEachisnotafunctionreturnfalsyData.map(function(data){data.forEach(function(key){if(key.match(reg)){returnkey;}});});但如果我这样做,它会起作用:returnfalsyData.map(function(data){for(varkeyindata){if(key.match(reg)){returnkey;}}});为什么?

javascript - "new DOMParser.parseFromString"能比 "createElement"更安全吗?

我创建了一个脚本来尝试删除不安全的内容(我将它用于浏览器扩展):varstr="Hellomundo";CreateDOM(str);functionRemoveAttrs(target){varattrs=target.attributes,currentAttr;varvalidAttrs=["href","class","id","target"];for(vari=attrs.length-1;i>=0;i--){currentAttr=attrs[i].name;if(attrs[i].specified&&validAttrs.indexOf(currentAttr)===

javascript - 使用 JavaScript 从 HTML5 data-* 属性获取 JSON 对象

这是我的HTML:到目前为止,这是我的JavaScript:vara=document.querySelectorAll('[data-setup]')for(vari=0;i这会提醒:ALERT:{"method":"checkbox"}但是我怎样才能访问JSON“方法”?我想基本上能够提醒“复选框”这个词。任何帮助表示赞赏。 最佳答案 JSON.parse将是从该JSON创建适当对象的最简单方法:for(vari=0;i当然,这在旧版浏览器中不起作用,因此如果您需要那种浏览器支持,则需要填充它。道格拉斯克罗克福德有垫片here,

javascript - 用于单页 Web 应用程序的 New Relic 真实用户监控

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion人们如何在使用Backbone、AngularJS等构建的单页Web应用程序中使用NewRelic的真实用户监控?假设它是一个带有rails后端的Backbone前端。入口页面将为我们提供加载时间分解,然后当用户与页面交互时,它会调用其他Web端点。例如,您通过/home输入,当您单击指向/about的链接时,它会调用一个为页面提供数据的webapi,主干的View会更新为新的dom元素。您也可以直接转到

javascript - new String() 的行为不像对象那样的数组

varnice=newString("ASH");nice;//String{0:"A",1:"S",2:"H",length:3,[[PrimitiveValue]]:"ASH"}varreverseNice=Array.prototype.reverse.call(nice);reverseNice.toString();//"ASH"而我期望reverseNice是“HSA”。 最佳答案 不能改nice,试试看;nice[0]='f';nice[0];//"A"如果您想使用Array方法,请先将其转换为真正的Arrayvarr

javascript - Angular : Watch Service for data changes?

我有一个定义如下的服务:appServices.service('SharedData',function(){vardata={};functionsetContacts(contacts){data.contacts=contacts;};functiongetContacts(){returndata.contacts;};return{setContacts:setContacts,getContacts:getContacts};});在另一个Controller中,我按如下方式访问数据:$scope.contacts=SharedData.getContacts();一切都