分别包括javascript对象的部分

分别包括javascript对象的部分,javascript,object,Javascript,Object,我有一个使用javascript对象保存各种函数和变量数据的站点 var Site = { Page: { ...some functions... }, Player: { ...more functions and variables... } } 我面临的问题是,脚本所在的头文件已经增长到大约500行代码。我想把像Page和Player这样的部分分成单独的文件,以便于操作。其中的一个障碍是有些函数依赖于PHP的输出,并且必须保留在基页上。是

我有一个使用javascript对象保存各种函数和变量数据的站点

var Site = {
    Page: {
    ...some functions...
    },
    Player: {
    ...more functions and variables...
    }
}

我面临的问题是,脚本所在的头文件已经增长到大约500行代码。我想把像Page和Player这样的部分分成单独的文件,以便于操作。其中的一个障碍是有些函数依赖于PHP的输出,并且必须保留在基页上。是否有一种方法可以将单独的文件包含到对象中并保留已存在的结构?

注意,按照惯例,以大写字母开头的变量是为构造函数保留的

文件1:

var Site = Site || {};

Site.Page = {     
    ...some functions...
}
文件2:

var Site = Site || {};

Site.Player = {
    ...more functions...
};
还可以使用扩展函数声明对象文字,然后将属性和值复制到基础对象。或者您可以使用IIFE分配函数。如果您正在进行功能检测并根据结果创建不同的功能,那么这非常方便

var Site = Site || {};

(function(global) {

  function Player() {
    // stuff
  }

  global.Site.Player = Player;

  if (test) {
    global.Site.someFn = function() {
      // stuff 1
    };

  } else {
    global.Site.someFn = function() {
      // stuff 2
    };
  }

  ...

}(this));

或者上面的某个版本

不要将数据与逻辑混为一谈。也就是说,“一些函数依赖于PHP的输出”是一种代码味道。如果您有这样的代码:

setSomeContent("<? echo $myobj->title() ?>");
setMoreContent("<? echo $myobj->description() ?>");
现在,对于来自PHP的数据,将其作为JSON导出到页面,并存储在它自己的变量中:

var myObj = <? echo myObj->toJSON() ?>;
Site.Page.setContentForObject(myObj);
var myObj=;
Site.Page.setContentForObject(myObj);

然后将其完全传递给JS文件中声明的任何函数。这样,数据和逻辑的分离仍然相当干净。

site.foo={…};site.bar={…}
// main.js
var Site = {
  // functions
};

// page.js
Site.Page = {
  // functions
};

// player.js
Site.Player = {
  // functions
};
var myObj = <? echo myObj->toJSON() ?>;
Site.Page.setContentForObject(myObj);