草庐IT

Prototype_Console

全部标签

Javascript:模块模式与构造函数/原型(prototype)模式?

我想知道是模块模式还是构造函数/原型(prototype)模式更适合我的工作。基本上我使用的是不显眼的javascript--HTML文档有对.js文件的引用。我对模块模式的理解:调用一个INIT方法(这基本上是一个公共(public)方法,我可以使用模块模式创建和返回)在INIT方法中,分配所有点击事件等。这听起来像是适合我的情况的完美模式,因为我不需要创建对象和继承层次结构等。我对构造函数/原型(prototype)模式的理解:用于创建对象使用继承(即父类(superclass)型的子类型)我是否正确,为了提供不显眼的javascript,模块模式是理想的?

javascript - 在您的生产 JavaScript 代码中保留 "console.log()"调用是个坏主意吗?

我的JavaScript中有一堆console.log()调用。我应该在部署到生产环境之前将它们注释掉吗?我只想将它们留在那里,这样以后如果我需要进行更多调试,就不必费心重新添加注释。这是个坏主意吗? 最佳答案 它会导致Javascript错误,终止包含错误的Javascriptblock的执行。但是,您可以定义一个虚拟函数,当Firebug未处于事件状态时它是一个空操作:if(typeofconsole==="undefined"){console={log:function(){}};}如果您使用log以外的任何方法,您也需要将

javascript - 为什么使用 Object.prototype.hasOwnProperty.call(myObj, prop) 而不是 myObj.hasOwnProperty(prop)?

如果我理解正确的话,JavaScript中的每个对象都继承自Object原型(prototype),这意味着JavaScript中的每个对象都可以通过其原型(prototype)链访问hasOwnProperty函数。阅读时RequireJS'源代码,我偶然发现了这个函数:functionhasProp(obj,prop){returnhasOwn.call(obj,prop);}hasOwn是对Object.prototype.hasOwnProperty的引用。将这个函数写成functionhasProp(obj,prop){returnobj.hasOwnProperty(pro

Javascript 继承 : call super-constructor or use prototype chain?

最近我读到有关MDC中JavaScript调用的用法https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call下面例子中的一个链接,我还是没看懂。为什么他们在这里使用继承Prod_dept.prototype=newProduct();有这个必要吗?因为在中有对超构造函数的调用Prod_dept()不管怎样,就这样Product.call这只是出于普遍行为吗?什么时候使用超构造函数调用或使用原型(prototype)链更好?functionProduct(name,value){t

javascript - 对象和 console.log 的奇怪行为

这个问题在这里已经有了答案:console.logofelement.childrenshows0lengthbuthasthreeentrieswhenexpandedlater(1个回答)IsChrome’sJavaScriptconsolelazyaboutevaluatingobjects?(7个答案)console.log()asyncorsync?(3个答案)关闭2年前。这段代码:foo=[{id:1},{id:2},{id:3},{id:4},{id:5},];console.log('foo1',foo,foo.length);foo.splice(2,1);conso

javascript - 如何使用 chrome 或 firefox 在 javascript 中将 console.trace() 的结果作为字符串获取?

console.trace()在控制台输出结果。我想以字符串形式获取结果并将它们保存到文件中。我没有为函数定义名称,我也无法使用callee.caller.name获取它们的名称。 最佳答案 我不确定firefox,但在v8/chrome中,您可以在Error构造函数上使用一个名为captureStackTrace的方法。(Moreinfohere)所以获取它的一种hacky方法是:vargetStackTrace=function(){varobj={};Error.captureStackTrace(obj,getStackTr

javascript - 使用 Prototype 遍历 javascript 中对象的每个属性?

有没有办法使用PrototypeJavaScript框架迭代对象的每个属性?情况是这样的:我收到一个JSON格式的AJAX响应,看起来像这样:{foo:1,bar:2,barobj:{75:true,76:false,85:true}}如果我将json响应评估为变量response,我希望能够遍历response.barobj对象中的每个属性以查看哪些索引是正确的和错误的。Prototype同时具有Object.keys()和Object.values()但奇怪的是似乎没有简单的Object.each()功能!我可以获取Object.keys()和Object.values()的结果,

javascript - 自动将 console.log 添加到每个函数

有没有办法通过在某处注册一个全局钩子(Hook)(即不修改实际函数本身)或通过其他方式使任何函数在调用时输出console.log语句? 最佳答案 这是一种使用您选择的函数来扩充全局命名空间中所有函数的方法:functionaugment(withFn){varname,fn;for(nameinwindow){fn=window[name];if(typeoffn==='function'){window[name]=(function(name,fn){varargs=arguments;returnfunction(){wit

javascript - Array.prototype.includes 与 Array.prototype.indexOf

除了提高可读性之外,includes是否比indexOf有任何优势?他们看起来和我一样。这有什么区别varx=[1,2,3].indexOf(1)>-1;//true还有这个?vary=[1,2,3].includes(1);//true 最佳答案 tl;dr:NaN的处理方式不同:[NaN].indexOf(NaN)>-1为false[NaN].includes(NaN)为true来自proposal:MotivationWhenusingECMAScriptarrays,itiscommonlydesiredtodetermin

javascript - 如何设置一个已经实例化的JavaScript对象的原型(prototype)?

假设我有一个对象foo在我的JavaScript代码中。foo是一个复杂的对象,它是在其他地方生成的。如何更改foo的原型(prototype)对象?我的动机是为从.NET序列化为JavaScript文本的对象设置适当的原型(prototype)。假设我在ASP.NET页面中编写了以下JavaScript代码。varfoo=;假设MyData是调用.NETJavaScriptSerializer的结果在Dictionary上对象。在运行时,这变成如下:varfoo=[{"A":"1","B":"2"},{"X":"7","Y":"8"}];如您所见,foo变成一个对象数组。我希望能够初