假设我有一个包含以下内容的文件“test.js”:
var test = 'something';
然后我有一个主要脚本需要加载 test.js 以获取测试变量。
显然这有效:
$.ajax({dataType: "script", cache: true, url: 'test.js'});
问题是变量test
存在于全局范围内。我很好奇是否有办法将其添加到对象中并使其脱离全局范围。
就像是:
function scriptloader() {
this.grabscript = function() {
return $.ajax({dataType: "script", cache: true, url: 'test.js'});
}
}
var myloader = new scriptloader();
myloader.grabscript();
理想情况下 myloader 将包含加载的变量test
。但是,我可以 console.log(test) 并且仍然看到“某些东西”。
有没有办法将加载的脚本锁定在范围内或者我在做梦?
你可以尝试这样的事情:
function scriptloader() {
this.grabscript = function() {
var loader = this;
$.ajax('test.js', {
complete: function(response) {
var js = '(function() {' + response.responseText + ' loader.test = test; })();'
eval(js);
},
dataType: 'text'
});
}
}
The scriptloader
然后实例将获得一个名为的属性test
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)