JavaScript对象问题

3

我是一名Javascript初学者。我正在查看其他人编写的以下代码:

function MeetingPage()
{
   MeetingPage.colors = new Object();
}

...

var meeting = new MeetingPage();

根据我所看到的,我认为MeetingPage函数创建了一个对象,在会议中由某人持有。那么MeetingPage.colors是什么?MeetingPage前缀是一种全局变量吗?还是某种“this”指针?

如果有任何建议,将不胜感激。


通常你会在那里看到 this,我不确定它是否会起作用(甚至是否打算这样做)。 - alex
代码看起来相当奇怪。实际上,每次调用 MeetingPage 作为构造函数或函数时,颜色属性都将被更改。此外,颜色属性甚至不会链接到 MeetingPage 的实例。 - ChaosPandion
你会如何将属性链接到实例? - mj_
2
使用 this. 替换 MeetingPage. - user578895
1
为了使其基于实例,应该使用this.colors = {}; - Reid
3个回答

8

实际上这只是不好的代码。 MeetingPage.colors = new Object(); 设置了一个叫做 colors 的属性在 MeetingPage 这个函数上,也就是说:

function MeetingPage(){ }
MeetingPage.colors = {};

这是完全有效的,因为JavaScript中的所有函数都是对象。问题在于,如果您有多个会议页面的实例:

var meeting1 = new MeetingPage();
var meeting2 = new MeetingPage();

您发布的代码将重置colors。应该编写为this.colors = {},或者应该在函数外部设置,就像我第一个片段中的那样。


0

0

这是创建类属性的JavaScript语法。请注意,它是一个属性而不是一个实例属性,这意味着它在类的所有实例之间共享。(如果您了解C++,这就像一个类静态)但是,我认为在构造函数内部放置类属性是无效的。我认为每次创建新的MeetingPage时,颜色类属性都会被清除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接