我知道不推荐使用全局对象,使用AMD背后的整个想法是避免使用全局对象.但是对于一些遗留代码,我必须在全局对象中定义一些东西.目前的代码如下:
//example2.js define(function(){ var globalObject = window; globalObject.x = ... globalObject.y = ... });
它的工作,但硬编码全球对象窗口看起来不是很好,我很好奇,看看是否可以删除它.当没有使用define()时,代码如下所示:
//example1.js x = ... y = ...
我知道,我知道你讨厌这个代码,但是让我们来看一下:在requirejs的define()函数内如何以结构化的方式访问全局变量?我希望有一个类似于隐藏的最后一个参数,传递给define()的函数如下所示:
//example3.js define(function(globalObject){ globalObject.x = ... globalObject.y = ... });
或者甚至更简单:该变量将指向该函数内的全局对象.例如:
//example4.js define(function(){ this.x = ... this.y = ... });
注意:我不知道最后一个.调查这个变量里面的函数传递给require()表示它等于窗口,这可以解答我的问题,但是我还没有找到任何文档,提到上传的函数是运行.也许它在全局变量的上下文中运行?