草庐IT

javascript - 为什么 CoffeeScript 将类定义包装在闭包中?

在CoffeeScript中,this:classFoomethod:(x)->x+1编译为://GeneratedByCoffeeScriptFoo=(function(){functionFoo(){}Foo.prototype.method=function(x){returnx+1;}returnFoo;})()这似乎有点过分了。以下内容应该功能相同://GeneratedbyDavefunctionFoo(){}Foo.prototype.method=function(x){returnx+1;}额外的“闭包”包装器的动机是什么?这不仅仅是一个无聊的样式问题;它对整体代码大

javascript - 将代码包装到闭包中是一个好习惯吗?

我是Angular的新手,我刚刚完成了来自CodeSchool的教程对于Angular的初学者。现在在第二个视频中,类(class)讲师说我们要将整个应用程序代码包装到一个闭包中。视频链接如下。他在00:30的某个地方说了这句话。现在为什么将我们的代码包装到闭包中是一个好习惯?Linktothevideo 最佳答案 闭包主要用于创建私有(private)作用域并避免变量泄漏到全局作用域中。 关于javascript-将代码包装到闭包中是一个好习惯吗?,我们在StackOverflow上找

javascript - 正则表达式用标签包装文本

这个问题在这里已经有了答案:Findastringoftextinanelementandwrapsomespantagsroundit(6个答案)关闭2年前。我需要一个JavaScript正则表达式来用包装“#hashtags”标签例子:之前:“我需要#help,拜托。#Thanks”之后:“我需要#help,拜托。#Thanks”目前,/#\w*\b/g找到所有#hashtags,但如何将它们包装在span标签中?谢谢!

javascript - 在 Javascript 中用 if 语句包装 For in 循环——遍历数组

JSLint一直提示这样的事情varmyArray=[1,2,3];for(varvalueinmyArray){//BLAH}说我应该把它包装在一个if语句中。我知道如果要遍历对象的属性,则需要将其包装起来,但在这里我应该在if语句中放入什么才能进行正确的过滤。此外,当我做类似的事情时for(vari=0;i它提示说我已经被定义了。除了使用不同的变量名外,我该如何防止这种情况发生? 最佳答案 JSLint提示了很多其实并不有害。在这种情况下,提示for...in是正确的,因为这是遍历数组的错误构造。这是因为您不仅会获得数字键,还会

Web 存储周围的 Javascript API 包装器?

在variouswebstoragesystems上是否有类似包装器API抽象的跨浏览器jquery可用的? 最佳答案 localStorage(又名“网络存储”)实际上无法与WebSQL或IndexedDB相提并论,因为它在空间上受到严格限制并且是同步的(读作:卡住浏览器的UI,因为它会拉屎)。因此,我在其余的帖子中忽略了localStorage。但是,如果您只需要一点存储空间,则可以直接使用localStorage,因为它得到了相当广泛的支持,或者像其他帖子建议的那样使用lawnchair,它得到了更广泛的支持。所以我们只剩下W

javascript:包装函数的圈复杂度

我的大多数javascript代码文件如下所示:(function(){varFoo=function(){...};varBar=function(){...};...}());我尝试了很多计算代码圈复杂度的工具,它们都生成了错误的报告(从我的Angular来看),即:它们都将包装函数作为最复杂的函数.问题是所有的报告都被这个事实严重扭曲了:包装函数通常占据了复杂性饼图的一半以上,而且所有的平均数都是有偏差的。有没有办法获得我的代码的真实复杂性,而不会受到包装函数的影响?所有这些工具都做错了吗?将我的代码包装在一个函数中以进行范围界定是我做错了吗(我不这么认为)?我在使用这些工具时做

javascript - 包装 Firebug(或类似)控制台 api 时如何访问行号

我包装了控制台API以提供精细的日志记录级别以及一些其他糖功能。这工作正常,唯一的问题是Firebug(或任何其他控制台)将始终报告日志来自的行号作为控制台API本身被调用的行。您建议我如何让控制台记录我调用包装函数的行号?我更喜欢跨浏览器解决方案,但失败时使用Firebug插件可能是一个好的开始。仅供引用,我这样调用我的日志函数:db.log(db.LogLevel.WARN,"BlahBlahBlah"); 最佳答案 有趣的问题...我可能有一个破解方法给你。我现在无法对此进行测试,但我认为它可能会起作用。我们知道常规函数调用是

javascript - 在构建过程中将代码包装在自定义闭包中

我想在使用Grunt(和uglify)构建过程中将我的代码包装在自定义类型的闭包中。此操作必须保持sourceMap正常工作。我的用例是将所有代码包装在try/catchblock中,以允许记录生产中的错误-而不会失去对堆栈跟踪的访问(与window.onerror)。我可能会使用Raven-js1.0来解决这个问题。任何人都知道我如何轻松地管理它?如果您有可能带来完整答案的提示,我们也会接受 最佳答案 最后,我找到了一个grunt插件(grunt-wrap),它正是这样做的:wrap:{modules:{src:['assets/

javascript - 为什么 TypeScript 将类包装在匿名函数中?

这个问题在这里已经有了答案:Howtodoclassimplementation?(1个回答)关闭7年前。例如,我们有一个Dog类:classDog{staticfood;privatestaticstatic_var=123;constructor(privatename){}speak(){console.log(this.name+',Ieat'+Dog.food+','+Dog.static_var);}}编译为JS:varDog=(function(){functionDog(name){this.name=name;}Dog.prototype.speak=function

Javascript:单击包装元素而不是子元素

我正在编写一些javascript(jQuery),使div包裹在复选框周围,单击时将切换复选框元素。但是,我遇到的问题是,当您单击复选框时,它不起作用,因为它被切换了两次(至少我认为这是正在发生的事情)。Here'sademo.代码如下:$('.checkbox-wrapper').click(function(){var$checkbox=$(this).find('input[type="checkbox"]');if($checkbox.is(':checked')){$checkbox.attr('checked',false);}else{$checkbox.attr('c