JavaScript嵌套对象

JaP*_*k14 4 javascript oop prototype

我有一个关于JavaScript的问题.我目前正在使用类似于以下代码的代码:

function Game() {

}
Run Code Online (Sandbox Code Playgroud)

我想嵌套对象,所以我可以像这样访问它们:

var a = new Game();
a.nested_object.method();
a.nested_object.property;
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我会使用函数还是{}?或者甚至重要吗?下面的代码是我所指的示例代码.

function Game() {

this.id;

var stats = {};

}
Run Code Online (Sandbox Code Playgroud)

就像我上面所说的那样,我可以像这样访问统计数据:

var a = new Game();
a.stats
Run Code Online (Sandbox Code Playgroud)

Aad*_*hah 5

我会这样做:

function Game() {
    this.id;
    this.stats = new Stats(this);
}

function Stats(game) {
    this.property;
    this.method = method;

    function method() {
        this.property;
        game.id;
    }
}

var game = new Game;
game.stats.method();
Run Code Online (Sandbox Code Playgroud)

原因如下:

  1. 关注点分离 - 游戏构造函数可以完全专注于游戏逻辑,统计构造函数将只关注游戏的统计数据.
  2. 模块化 - 您可以将游戏构造函数和stats构造函数放在两个不同的文件中.这允许您单独处理它们并使项目更易于管理.
  3. 松散耦合 - 统计对象不需要知道游戏对象.所以最好将它与游戏对象分开.如果你使用对象文字表示法创建它(如@Bergi所做的那样),那么stats对象可以访问游戏对象的私有成员(如果stats对象意外地改变了游戏对象的私有属性,这可能会适得其反. ).
  4. 可读性 - 比较@ Bergi的代码和我的代码.分离统计数据和游戏对象使代码更易于阅读和理解.您可以只看一眼代码并确切知道发生了什么.