0

我的应用程序使用这个主要对象,正如您所见,大部分工作都是在此方法中完成的。问题是如果我想把它全部写在一个文件中,这个对象会变得太大。而且代码很难调试。有什么方法可以用来将此对象拆分为多个文件(例如一个文件中的每个函数)?我还希望能够从这些函数中访问和更改 displayArray、userOptions 和查询变量。
任何形式的建议表示赞赏。感谢 :)

application = {
    displayArray : new Array(),
    userOptions : new Array(),
    query : '', 
    status : false,

    initilize : function () {
        //its going to initialize displayArray, userOptions and status.
    },

    loadOptions : function () {
        //this function builds userOptions array
    },

    JSONConverter : function () {
      //this function uses query to builds displayArray  
    },

    display : function () {
       //this function will use displayArray to build HTML elements on page
    },

};
4

5 回答 5

1

例如:

 // file: application.js
(function (window, undefined) {
  var application = {
     // ...
  };
  window['application'] = application;
}(window));

// file: application-module1.js
(function (application, window, undefined) {
  var module_foo = {
     // ...
  };
  application['module_foo'] = module_foo;
}(application, window));

// file: application-module2.js
(function (application, window, undefined) {
  var module_bar = {
     // ...
  };
  application['module_bar'] = module_bar;
}(application, window));
于 2012-09-02T11:58:54.550 回答
0

抽象.js

function abstractClass(construct_options){{

}

someObject.js

someObject.prototype = new abstractClass();
someObject.prototype.foo = function(){


}

其他对象.js

otherObject.prototype = new abstractClass();
otherObject.prototype.toe = function(){


}

进一步你可以这样做:

var a = new someObject();
var b = new otherObject();
于 2012-09-02T11:59:10.867 回答
0

您可以将所有功能移动到单独的文件中,并将它们添加到应用程序的原型中。

文件初始化.js:

function initialize () {
    this.displayArray =  new Array();
}

文件初始化.js:

function() Application{
    this.userOptions = new Array();
    this.query = '';
    this.status = false;
    this.initialize();
}

Application.prototype.initialize = initialize;

此解决方案将使用外部文件中的所有函数污染您的全局名称空间。因此,如果它是一个更大的项目,您应该开始使用 AMD 解决方案,例如requirejs

文件初始化.js:

define(function () {
    return function () {
        this.displayArray =  new Array();
    }
})

文件初始化.js:

define(['initialize'], function (initialize) {
    function() Application{
        this.userOptions = new Array();
        this.query = '';
        this.status = false;
        this.initialize();
    }

    Application.prototype.initialize = initialize;
    return Application;
})
于 2012-09-02T12:03:55.130 回答
0

您可以在一个文件中定义应用程序“类”,然后使用原型将每个函数添加到单独的文件中,例如

var application = function () { };

application.prototype.method1 = function (arg1) {
window.alert(arg1);
}

var a = new application();
a.method1('Hello, World!');
于 2012-09-02T12:12:12.530 回答
0

你可以!编写几个 .js 脚本,然后将它们嵌入到 html 文件中,如下所示:

<head>
    <script type="text/javascript" src="script1.js"></script>
    <script type="text/javascript" src="script2.js"></script>
</head>

是如何做到这一点的一个很好的例子。(来源

于 2012-09-02T11:58:05.090 回答