这可能是一个wiki问题,但仍然如此。哪种方法更加符合JavaScript的精神:在javascript中创建对象(带有新的)有什么好处?
var Report = function(data) {
var that = this;
that.send = function() { ... };
};
var r = new Report(data); // create and validate the data
r.send(); // encode and send the data
或
var sendReport = function(data) {
...
// create, validate, encode and send the data
...
};
第一种方法似乎更面向对象,第二个更多的功能?首先看起来Report
的功能更具可测性(尽管例如我们在这个阶段只有send()
)。另外,当需要检查状态时,我喜欢在调试器中看到类型为Report
的对象。
第二种方法可能更“简单”,但它似乎不太可测试。
我个人使用第一种方法,但问题是如果我尝试在“错误”域中应用OO“原则”(请帮助我更好地说出我的问题)。
OO原则与“新”操作符无关。我用你的第二个见解来开发我所有的课程。 – 2012-07-18 09:37:45
@some_coder我看到它的方式,第二个是一个简单的函数,而不是一个类。它需要数据并发送,然后完成。 – Esailija 2012-07-18 09:39:09
@Ssailija在JS中,你真的没有像其他语言(如C++/java)中的“类”。第一种方法也仅仅是一个函数(你可以看到它是一个函数指针或左右)。唯一的区别是你使用“var x = new Report(data)”创建一个实例。在第二种方法中,您只使用“var x = sendReport(data)”来创建一个实例。或者我不明白这个问题。 – 2012-07-18 09:42:32