对象文字中的类

Classes inside object literals

本文关键字:文字 对象      更新时间:2023-12-19

尽管尝试了很多次,但我还是不确定如何搜索,所以如果以前有人回答过,请原谅我。

问题很简单:我可以将类window.A.class()的实例创建为window.B吗?

为了澄清,我有一个保存浏览器游戏所有数据的对象文字:

var gameName = {
  environment: function() {
    this.place = "...";
    // ...
    // ...
  },
  game: function() {
    this.player = function() {
       // ...
    }
  }
  // and so on...
}

我可以用var A = new gameName.environment()创建一个window级的gameName.environment()实例吗?在类的父对象之外创建对象绑定类的实例有任何限制吗?

在这种情况下,函数的定义方式/位置并不重要。考虑以下两个例子:

function Foo() {}
var obj = {
    bar: Foo
};

var obj = {
    bar: function () { }
};

就函数和对象而言,这两个例子是等价的。所以不,用new调用分配给对象属性的函数是没有问题的。您所需要的只是对函数的引用,无论您如何获得该引用。

你可以做

var Environment = gameName.environment;
var A = new Environment();

如果你更喜欢的话,但那完全没有必要。