2016-12-28 92 views
0

我试图创建一个类来更好地组织我的代码,我决定的Javascript:设置对象变量内的对象实例

var MyClass = { 

} 

我目前正在运行的走对象字面路线到迁移的一些问题我的功能虽然,以前我有全局范围变量通道例如设置为一个对象实例。有没有一种方法仍然可以在类中的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; 
} 

没有任何错误

+1

“仍然这样做” - 做什么? – Igor

+0

目前还不清楚你在问什么。你能否以不同的方式显示旧式工作代码和*相同功能? NB:'var Prime {'是无效的语法。 – trincot

+0

如果你运行该 __Prime__Channel未定义 林问如果有类变量设置为分类功能 – HyperCrusher

回答

0

一个对象没有课程,请确保您使用的是正确的术语。

一个对象文本it is not possible to do what you want,唯一的办法就是

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

然而,也许对象文本是错误的花样呢。如果您想避免全局变量,请查看模块模式和IIFE。

+0

谢谢,我的项目受限于JavaScript解释器,它相当过时并且我无法控制,所以我坚持使用对象文字作为“类”,对于术语混淆感到遗憾 – HyperCrusher

+0

Nah,自ES1构建器和原型以来,您可以拥有“类”,但“Prime”确实不是。 'Prime .__ Prime__Channel'可能被称为“班级”。 – Bergi

相关问题