我只需要知道使用这两种方法创建对象的基本区别是什么,以及使用对象的效果。
//////////////////////////////////////////
myTestObject.prototype.var1 = null;
function myTestObject()
{
this.var1 = "test me";
}
myTestObject.prototype.action = function()
{
alert("alertme");
};
// to use
var a = new myTestObject();
a.action();
//////////////////////////////////////////
//////////////////////////////////////////
(function()
{
$.myTestObject3 = {
var1 : "test me",
action : _actionMethod
};
function _actionMethod()
{
alert("alertme3");
}
})();
$.myTestObject3.action();
//////////////////////////////////////////
一些更新......这个问题的答案让我去谷歌搜索不同的关键词,这导致了两篇有趣的文章,这些文章真正详细介绍了 javascript 中的构造函数与文字对象
http://net.tutsplus.com/tutorials/javascript-ajax/the-basics-of-object-oriented-javascript/
然后作为使用函数构造函数时为什么要使用原型的继续,特别注意为什么使用原型更好的部分
因此,作为后续,您可以将两者结合起来使用,就像下面的吉他示例一样,作为一个很好的练习。如果只需要一个对象的一个副本并且对其进行更改,知道它会影响整个脚本是可以的,那么对象字面量就可以了。但是,如果需要使用原型方法创建许多对象是最好的,因此所有创建的对象都使用对同一函数的引用,而不是拥有该函数的副本。
另一篇更好地利用命名空间并结合所有这些方法的好文章 http://javascriptweblog.wordpress.com/2010/12/07/namespacing-in-javascript/
最后的跟进 我希望其他人觉得这很有用,因为这些主题让我陷入了一段时间的循环。
现在知道要寻找什么,我找到了两个非常好的 url,它们描述了许多设计模式以及如何使用几个示例在 javascript 中混合它们。
这篇文章描述了如何以利用原型符号的方式使用模块模式。这将允许您划分代码,同时仍确保实例引用相同的对象。 http://briancray.com/posts/javascript-module-pattern/
这经历了几种设计模式并列出了优缺点 http://addyosmani.com/resources/essentialjsdesignpatterns/book/