我对Javascript了解得很多,但这个特殊的东西让我感到震惊。实际上,我有一个这样的课程:
$(document).ready(function() {
// jQuery Object
var $ = jQuery;
// A general class for a general file.
var MyClass = function() {
// ...
}
MyClass.prototype = {
init: function() {
// ...
}
}
new generalClass();
});
我将此文件包含在我的文档的头部,以及调用另一个jQuery对象:
<script src="script.js"></script>
<script>
$(document).ready(function() {
MyClass.prototype.init();
});
</script>
我想在第二个jQuery函数中调用MyClass中的一些函数(如上所示),但由于范围不同,我无法访问它。我该怎么做呢?
答案 0 :(得分:0)
你必须要么定义这两个,以便它们在一个共同的作用域函数中(这将是你的ready
回调,或者只是你在body
结束时执行的东西),或者(和是一个更小的替代品)导出MyClass
作为全球,或使用一些第三方全球(例如,RequireJS&#39; s require
和define
)。除非您执行其中任何一项操作,否则第二个ready
回调中的代码无法访问第一个ready
回调中包含的私有符号。
答案 1 :(得分:0)
如果在函数内部声明了变量,那么它的作用域将仅在该函数内部。除非你在全局声明它(在函数之外)。
<强>的script.js 强>
// A general class for a general file.
var MyClass = function() {
// ...
};
MyClass.prototype = {
init: function() {
// ...
}
}
注意:没有$(document).ready
,因为我们并不真的需要它来创建一个类,或者运行任何不干预DOM的javascript。
<强> HTML 强>
<script src="script.js"></script>
<script>
$(document).ready(function() {
MyClass.prototype.init();
});
</script>