如果我的网站不需要任何类型的优化,并且我的对象结构相当平坦,因此不需要继承,我是否应该使用原型:
MyObject.prototype.<something>
我提到了这个问题Javascript when to use prototypes和John Resig的各种着作,他们似乎专注于原型的性能价值。
我发现使用模块模式来定义对象及其功能更易于阅读和管理,正如michielvoo所提到的,过早优化往往会造成更多的伤害而不是好的。
原型还有其他任何好处或用例吗?
答案 0 :(得分:1)
好吧,如果您提到该问题,通过将其称为优化开始接受的答案,那么我会说不要去premature optimization。您可能永远不会获得任何好处(参见:YAGNI)并且您的工作更加困难,因为您自己(以及您的团队?)更喜欢模块模式。
答案 1 :(得分:1)
这是一种代码组织模式。
有两种方法可以跨对象共享方法
var oneWay = Object.create(bagOfMethods);
// some value of extend that is sensible
var otherWay = extend({}, bagOfMethods);
原型的唯一真正优势是oneWay
和bagOfMethods
之间的链接是实时的。
拥有实时链接可以实现真正强大的扩展和猴子补丁。
一个例子是Object.prototype.methodNowLivesOnAllInstances = function () { };
这是一种做“异步”编程的方法,你可以扩展“类”而不用担心所有实例是否都获得了新方法。
关于模块化模式的说明,它是膨胀的,不需要。使用modul8或browserify之类的模块构建器。