草庐IT

可变引用

全部标签

lambda 函数引用封闭循环中的变量时的 javascript 作用域问题

关于stackoverflow的第一个问题:)希望我不会让自己难堪......我有一个加载相册列表的javascript函数,然后为每个相册创建一个列表项。列表项应该是可点击的,所以我用一个函数调用jQuery的click()。我循环执行此操作。我的问题是所有项目似乎都具有相同的点击功能,即使我尝试制作一个在每次迭代中做不同事情的新项目。另一种可能性是迭代变量在某种程度上是全局的,函数引用它。下面的代码。debug()只是对Firebug的console.debug()的封装。functionprocessAlbumList(data,c){for(varalbumindata){va

javascript - 如何通过引用 JavaScript 中的事件处理程序来传递变量?

我用JavaScript模拟了一个类;它的代码在这里:functionmyclass(){this.count;this.init=function(){$("div.mybtn").click({n:this},function(e){e.data.n.count++;});}this.getCount=function(){alert(this.count);}}然后我创建了这个类的一个实例并执行了它的方法init(),但是当我点击任何div.mybtn元素时,它并没有增加值this.count.对象this似乎是按值而非引用传递给事件处理程序的。如何通过引用将变量传递给事件处理程

javascript - 将 React 的不可变助手与 Immutable.js 结合使用

我正在研究助焊剂应用,正在考虑采用immutable.js保持状态。我看到React提供了自己的帮助程序来更新不可变对象(immutable对象)(http://facebook.github.io/react/docs/update.html),但无法说出它与不可变对象(immutable对象)自己的setIn和updateIn方法有何不同(即,我已经可以将对象与===进行比较,如果它们随setIn改变)。是否有理由将react助手与immutable.js一起使用?它只是语法糖吗?TL;DR是:varmap=Immutable.fromJS({bar:'baz'});map2=Re

javascript - 你如何引用 Array.prototype.slice.call()?

我正在编写一个脚本,其中我需要在许多不同的地方克隆数组。因此,我想执行以下操作来模拟克隆功能:varclone=[].slice.call;vararr1=[1,2,3,4,5,6,7,8,9,10];vararr2=clone(arr1,0);不幸的是,上面的代码导致:TypeError:objectisnotafunction。我意识到有很多功能可以进行深度克隆和浅拷贝,但我只想使用内置方法。有趣的是,以下确实有效:varclone=[].slice;vararr1=[1,2,3,4,5,6,7,8,9,10];vararr2=clone.call(arr1,0);有谁知道为什么第

javascript - 在 Javascript 中引用 window 对象的目的是什么?

window对象的每个属性都是一个全局变量。这意味着您可以执行以下操作:window.foo=42;alert(foo);//alerts42varbar=3;alert(window["bar"]);//alerts3正因为如此,我一直想知道在这样的代码中引用window的目的是什么if(window.prompt("EnterPassword")==="secret"){window.location.hash="authorized";window.open("secretPage.html");}当您可以省略window并使用完全相同的代码时:if(prompt("EnterP

javascript - 在一个文件而不是所有 JS 文件中引用 typescript 定义?

我正在VisualStudioCode中开发一个NodeJS(+Express)项目,想知道是否有一种方法可以在一个全局位置引用TypeScript定义,而不必在每个JS文件中重新引用定义.我看到VSCode支持tsconfigs,但我不认为.tsconfig文件有一个部分。 最佳答案 在某些编辑器中,您可以使用tsconfig.json中的filesGlob属性来简化引用。例如:"filesGlob":["./scripts/*.ts","!./node_modules/**/*.ts"]但是,这仅在TypeScript2发布时适

javascript - 在 Javascript 中引用数组

我有一个可能很愚蠢的问题。在下面的代码中,函数doStuff似乎将myArray重新分配给一个空数组,但在控制台中尝试时,myArray仍然是[2,3,4,5]。varmyArray=[2,3,4,5];functiondoStuff(arr){arr=[];};doStuff(myArray);console.log(myArray)//=>[2,3,4,5]此外,修改数组的函数似乎工作正常。例如:functionchangeSecondIndex(arr){arr[2]=25;}changeSecondIndex(myArray)console.log(myArray)//=>[2

javascript - JavaScript 中的不可变哈希和数组实现?

javascript中是否有简单的不可变哈希和数组实现?我不需要最好的速度,比克隆更好的合理速度就可以了。另外,如果有简单的Java或一些其他语言的实现可以容易理解并移植到JavaScript,那也很好。更新:目标不仅仅是卡住散列(或数组),而是高效地实现更新操作——不可变散列的更新应该返回一个新的不可变散列。而且它应该比“克隆原始文件并更新它”更有效。原生JS类型的更新复杂度为O(1),克隆复杂度为O(n),特殊不可变数据结构(我要求的)为0(log(n))UPDATE2:JavaScript已经有了Array/Hash:是的,但它们是可变的,我需要类似但不可变的东西,基本上可以通过

javascript - Typescript 错误引用 _this

我尝试在TypeScript中为String.Prototype定义一些属性:Object.defineProperty(String.prototype,'test',{value:()=>{console.log("thisisatestovertext"+this);}})在javaScript原型(prototype)中,this指调用方法的对象(在本例中为字符串值)。但是文件的编译输出是:var_this=this;Object.defineProperty(String.prototype,'test',{value:function(){console.log("this

javascript - 如何引用 Firefox 扩展的数据目录中的文件?

我正在开发Firefox扩展程序,我需要从内容脚本中将JavaScript注入(inject)到页面中。在我的Chrome扩展中,我做了以下事情:this.initializeJplayerSupport=function(){varscript=document.createElement('script');script.setAttribute('type','application/javascript');script.setAttribute('src',chrome.extension.getURL('js/custom-jplayer.js'));document.he