【问题标题】:Javascript: set object variable to inner object instance [duplicate]Javascript:将对象变量设置为内部对象实例
【发布时间】:2016-12-28 19:52:22
【问题描述】:

我正在尝试创建一个类来更好地组织我的代码,我决定走对象文字路线

var MyClass = {

}

我目前在迁移我的一些功能时遇到了问题,以前我将全局范围变量 Channels 例如设置为一个对象实例。有没有办法在不将对象移动到全局范围内的情况下在类中的 javascript 中执行此操作?

var Prime = {
   Channel: new __Prime__Channel(),

   //The object in question
   __Prime__Channel: function() {
       this.Property = Value;
   },
}

这会抛出

第 2 行的未定义引用 __Prime__Channel()

在全球范围内你可以这样做

var Channel = new __Prime__Channel();

function __Prime__Channel() {
        this.Property = Value;
}

没有任何错误

【问题讨论】:

  • “仍然这样做” - 做什么?
  • 不清楚你在问什么。您能否展示您尝试以不同方式实现的旧式工作代码和相同 功能?注意:var Prime{ 语法无效。
  • 如果你要运行这个 __Prime__Channel 是未定义的我问是否有办法将类变量设置为类函数的新实例
  • 我不明白你在说什么。您能否展示旧式工作代码和您尝试以不同方式实现的相同功能?
  • 当然,我在全局范围内添加了我一直在做的事情,但是当您通过 var Prime 将范围限制在类内时,您会得到一个未定义的错误

标签: javascript class variables object instance


【解决方案1】:

对象不是类,请确保您使用了正确的术语。

使用对象字面量it is not possible to do what you want,唯一的方法是

var Prime = {
   __Prime__Channel: function() {
       this.Property = Value;
   }
}
Prime.Channel = new Prime.__Prime__Channel();

但是,无论如何,对象字面量可能是错误的模式。如果您想避免使用全局变量,请查看模块模式和 IIFE。

【讨论】:

  • 谢谢,我的项目受到一个相当过时的 javascript 解释器的限制,我无法控制,所以我坚持使用对象文字作为“类”,抱歉混淆了术语
  • 不,自 ES1 以​​来,您可以使用带有构造函数和原型的“类”,但 Prime 两者都不是。 Prime.__Prime__Channel 可能被称为“类”。
猜你喜欢
  • 2014-02-25
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 2011-12-17
  • 2013-10-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多