如何从另一个jQuery函数中的类访问函数?

时间:2014-09-16 21:10:03

标签: jquery scope

我对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中的一些函数(如上所示),但由于范围不同,我无法访问它。我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

你必须要么定义这两个,以便它们在一个共同的作用域函数中(这将是你的ready回调,或者只是你在body结束时执行的东西),或者(和是一个更小的替代品)导出MyClass作为全球,或使用一些第三方全球(例如,RequireJS&#39; s requiredefine)。除非您执行其中任何一项操作,否则第二个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>