【发布时间】:2025-12-11 02:10:01
【问题描述】:
我对创建一个 MVC javascript 框架感到好奇,并作为一种学习体验。
在主干.js https://github.com/jashkenas/backbone/blob/master/backbone.js 中,作者使用下划线的_.extend() 方法来“扩展”主干对象。
从Model 开始,我试图找出这样做的好处。
// Attach all inheritable methods to the Model prototype.
_.extend(Model.prototype, Events, {});
这是如何工作的? Model在这之前已经定义好了,那么作者要Copy all of the properties in the source objects over to the destination objecthttp://underscorejs.org/#extend,他在里面创建了一大堆方法来与源模型交互作为原型?
为什么不这样做
Backbone.Model.prototype.get = function() {
return 'Do Get';
}
Backbone.Model.prototype.set = function() {
return 'Do Set';
}
还是使用 Es6 更好?下面的和上面的一样吗??
class Model extends Backbone {
get() {
return 'Do Get';
}
set() {
return 'Do Set';
}
}
我是在正确的道路上,还是我在这里遗漏了什么?显然他在 es6 出现之前就创建了这个,但我也很想知道它是否可以做到。
我的角度是把握他的意图并重新创建概念,而不需要下划线依赖。
【问题讨论】:
-
您可以通过扩展每个集合从多个集合中“继承”,而将其绑定到原型会创建一个关联。它还可以让您更轻松地编辑实例而不影响其他代码,因为这些方法是自己的属性而不是实际的原型方法。
-
查看link
-
这里的Events对象是一个mixin...阅读mixins...