【发布时间】:2012-03-14 03:51:56
【问题描述】:
我正在使用 Javascript 模块模式来尝试实现类似 C# 枚举的功能。我目前正在考虑两种方法来实现此功能,但我不了解一种方法与另一种方法相比的所有好处或优势。
这里是实现 1:
var MyApp = (function (app) {
// Private Variable
var enums = {
ActionStatus: {
New: 1,
Open: 2,
Closed: 3
}
};
// Public Method
app.getEnum = function (path) {
var value = enums;
var properties = path.split('.');
for (var i = 0, len = properties.length; i < len; ++i) {
value = value[properties[i]];
}
return value;
};
return app;
})(MyApp || {});
// Example usage
var status = MyApp.getEnum("ActionStatus.Open");
现在实现 2:
var MyApp = (function (app) {
// Public Property
app.Enums = {
ActionStatus: {
New: 1,
Open: 2,
Closed: 3
}
};
return app;
})(MyApp || {});
// Example usage
var status = MyApp.Enums.ActionStatus.Open;
主要区别在于使用“私有”变量与“公共”属性来存储枚举。我认为实现 1 会慢一些,但我不确定将枚举保持为“私有”是否会减少内存使用量。谁能解释两者在内存占用和性能方面的差异(如果有的话)?任何其他建议/建议表示赞赏。
【问题讨论】:
标签: javascript performance optimization memory