// first.js
$(document).ready(function() {
var MyNamespace = {};
});
// second.js
$(document).ready(function() {
console.log(MyNamespace);
});
运行此脚本我收到错误Uncaught ReferenceError: MyNamespace is not defined
。我想,我收到此错误是因为MyNamespace
和MyNamespace
调用的定义在不同的范围内。我该如何解决这个问题?
我需要在$(document).ready()包装器中创建命名空间,因为此命名空间中的函数将使用jQuery方法等。
最佳做法是什么?
谢谢!
答案 0 :(得分:2)
如果您在文档就绪处理程序之外定义变量 -
,它应该可以工作var MyNamespace = {};
$(document).ready(function() {
console.log(MyNamespace);
});
答案 1 :(得分:2)
您需要更改两件事:
MyNamespace
置于全局范围内; MyNamespace
; 您将var MyNamespace = MyNamespace || {};
放在两个js文件的前面。如果之前未定义,则将MyNamespace
作为对象进行十进制。
// first.js
var MyNamespace = MyNamespace || {};
$(document).ready(function() {
console.log(MyNamespace);
});
// second.js
var MyNamespace = MyNamespace || {};
$(document).ready(function() {
console.log(MyNamespace);
});
答案 2 :(得分:0)
在范围外创建命名空间,然后在范围内向其添加方法:
var MyNamespace = {};
$(document).ready(function() {
MyNamespace.MyFunction = function () { ... };
});
$(document).ready(function() {
console.log(MyNamespace);
});
答案 3 :(得分:0)
在外面创建并在里面更新:
var MyNamespace = {};
$(document).ready(function() {
MyNamespace.Example = new function() { // do something };
});
$(document).ready(function() {
console.log(MyNamespace);
});
答案 4 :(得分:0)
使用var
定义函数的局部变量,该变量在此范围之外不可见。退出var
将定义一个全局变量,也可以在另一个函数中访问。一般而言,您应该避免使用全局变量,但如果这就是您所需要的,只需说出MyNamespace = {};
答案 5 :(得分:-1)
使用'window'对象。
$(document).ready(function () {
window['x'] = 'test';
});
$(document).ready(function () {
alert(x);
});