【发布时间】:2012-07-23 23:46:36
【问题描述】:
似乎有很多方法可以设置 JavaScript 应用程序,所以很难确定哪一种是正确的或最好的。以下技术或更好的方法有什么不同吗?
MyNamespace.MyClass = {
someProperty: 5,
anotherProperty: false,
init: function () {
//do initialization
},
someFunction: function () {
//do something
}
};
$(function () {
MyNamespace.MyClass.init();
});
另一种方式:
MyNamespace.MyClass = (function () {
var someProperty = 5;
var anotherProperty = false;
var init = function () {
//do something
};
var someFunction = function () {
//do something
};
return {
someProperty: someProperty
anotherProperty: anotherProperty
init: init
someFunction: someFunction
};
}());
MyNamespace.MyClass.init();
第一种技术感觉更像是一门课。如果这有所作为,我来自服务器端背景。第二种技术似乎更多余,也有点尴尬,但我也看到它被大量使用。有人可以帮忙阐明一下并建议前进的最佳方式吗?我想创建一个应用程序,其中包含许多相互通信的类。
【问题讨论】:
-
这不是使用 OOP JS 而是使用模块模式。
-
另外,您暗示这两种方法是等效的,但第二种方法无效。你声明私有变量的方式在语法上是无效的,你只需要一个常规的 var 语句。
-
谢谢我修正了第二种方法。
-
如果您有兴趣了解更多信息,我强烈推荐 Douglas Crockford 的 Javascript: The Good Parts。他不仅提供了经典 OOP 的 Javascript 方法,还解释了如何使用 Javascript 的更多类似 LISP 的部分来创建其他一些令人惊叹的结构。从头开始,他解释了每种结构的工作原理和原因,以及最有效的方法。此外,您可能个人有兴趣学习CoffeeScript,尤其是其内置的class structure。
标签: javascript oop javascript-framework javascript-objects javascript-namespaces