Tag: 关闭

JavaScript函数别名似乎不工作

我只是读这个问题 ,想尝试别名的方法,而不是函数包装方法,但我似乎无法得到它的工作在Firefox 3或3.5beta4,或谷歌浏览器,在他们的调试窗口和在测试网页。 萤火虫: >>> window.myAlias = document.getElementById function() >>> myAlias('item1') >>> window.myAlias('item1') >>> document.getElementById('item1') <div id="item1"> 如果我把它放在一个网页上,对myAlias的调用给我这个错误: uncaught exception: [Exception… "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: file:///[…snip…]/test.html :: <TOP_LEVEL> :: line 7" data: no] Chrome(为清楚起见,插入了>>>): >>> window.myAlias = document.getElementById function getElementById() { [native code] } >>> window.myAlias('item1') […]

请解释在循环中使用JavaScript闭包

我已经阅读了一些关于循环内部闭包和闭包的解释。 我很难理解这个概念。 我有这样的代码:是否有办法尽可能地减少代码,这样可以使闭包的概念更清晰。 我很难理解i在两个括号内的部分。 谢谢 function addLinks () { for (var i=0, link; i<5; i++) { link = document.createElement("a"); link.innerHTML = "Link " + i; link.onclick = function (num) { return function () { alert(num); }; }(i); document.body.appendChild(link); } } window.onload = addLinks;

为什么不是python嵌套函数叫闭包?

我已经看到并在Python中使用嵌套的函数,它们匹配闭包的定义。 那为什么他们叫nested functions而不是closures呢? 嵌套函数是不是因为它们不被外部世界使用而关闭? 更新:我正在阅读有关闭包,它让我思考这个关于Python的概念。 我在下面的评论中搜索并找到了某人提到的文章,但是我不能完全理解那篇文章中的解释,所以这就是我提出这个问题的原因。

访问修改的关闭

string [] files = new string[2]; files[0] = "ThinkFarAhead.Example.Settings.Configuration_Local.xml"; files[1] = "ThinkFarAhead.Example.Settings.Configuration_Global.xml"; //Resharper complains this is an "access to modified closure" for (int i = 0; i < files.Length; i++ ) { // Resharper disable AccessToModifiedClosure if(Array.Exists(Assembly.GetExecutingAssembly().GetManifestResourceNames(), delegate(string name) { return name.Equals(files[i]); })) return Assembly.GetExecutingAssembly().GetManifestResourceStream(files[i]); // ReSharper restore AccessToModifiedClosure } 以上似乎工作正常虽然ReSharper抱怨说,这是“访问修改关闭”。 任何人都可以阐明这一点吗? (这个话题继续下去)

var self =这个?

使用实例方法作为事件处理程序的回调函数将其范围从“我的实例”更改为“无论何时只是称为回调” 。 所以我的代码看起来像这样 function MyObject() { this.doSomething = function() { … } var self = this $('#foobar').bind('click', function(){ self.doSomethng() // this.doSomething() would not work here }) } 它的工作原理,但这是最好的办法吗? 我看起来很奇怪