如果我不需要继承或优化,我应该使用原型吗?

时间:2012-01-18 23:16:19

标签: javascript performance prototype

如果我的网站不需要任何类型的优化,并且我的对象结构相当平坦,因此不需要继承,我是否应该使用原型:

MyObject.prototype.<something>

我提到了这个问题Javascript when to use prototypes和John Resig的各种着作,他们似乎专注于原型的性能价值。

我发现使用模块模式来定义对象及其功能更易于阅读和管理,正如michielvoo所提到的,过早优化往往会造成更多的伤害而不是好的。

原型还有其他任何好处或用例吗?

2 个答案:

答案 0 :(得分:1)

好吧,如果您提到该问题,通过将其称为优化开始接受的答案,那么我会说不要去premature optimization。您可能永远不会获得任何好处(参见:YAGNI)并且您的工作更加困难,因为您自己(以及您的团队?)更喜欢模块模式。

答案 1 :(得分:1)

这是一种代码组织模式。

有两种方法可以跨对象共享方法

var oneWay = Object.create(bagOfMethods);
// some value of extend that is sensible
var otherWay = extend({}, bagOfMethods);

原型的唯一真正优势是oneWaybagOfMethods之间的链接是实时的。

拥有实时链接可以实现真正强大的扩展和猴子补丁。

一个例子是Object.prototype.methodNowLivesOnAllInstances = function () { };

这是一种做“异步”编程的方法,你可以扩展“类”而不用担心所有实例是否都获得了新方法。

关于模块化模式的说明,它是膨胀的,不需要。使用modul8或browserify之类的模块构建器。