Javascript 带主干的类构造函数 任务
可以将命名参数传递给新的bb备份对象 例子 问题Javascript 带主干的类构造函数 任务,javascript,backbone.js,Javascript,Backbone.js,可以将命名参数传递给新的bb备份对象 例子 问题 是否可以不修改库源代码?您可以将JavaScript对象作为参数传递到构造函数中,请查看: 如果您检查源代码,您将看到模型调用initialize,如下所示: Backbone.Model = function(attributes, options) { // ... this.initialize(attributes, options); }; this.initialize.apply(this, arguments); va
是否可以不修改库源代码?您可以将JavaScript对象作为参数传递到构造函数中,请查看:
如果您检查源代码,您将看到模型调用
initialize
,如下所示:
Backbone.Model = function(attributes, options) {
// ...
this.initialize(attributes, options);
};
this.initialize.apply(this, arguments);
var View = Backbone.View.extend({
initialize: function(a, b, c, d) {
// ...
}
});
new View('where', 'is', 'pancakes', 'house?');
但是收集、路由器和视图是这样称呼的:
Backbone.Model = function(attributes, options) {
// ...
this.initialize(attributes, options);
};
this.initialize.apply(this, arguments);
var View = Backbone.View.extend({
initialize: function(a, b, c, d) {
// ...
}
});
new View('where', 'is', 'pancakes', 'house?');
我们都知道,这是不是:
使用给定的this
值和作为数组提供的参数调用函数
是:
与传递给函数的参数相对应的类似数组的对象
因此,对于型号,您必须遵守标准,但对于其他型号,您可以执行以下操作:
Backbone.Model = function(attributes, options) {
// ...
this.initialize(attributes, options);
};
this.initialize.apply(this, arguments);
var View = Backbone.View.extend({
initialize: function(a, b, c, d) {
// ...
}
});
new View('where', 'is', 'pancakes', 'house?');
演示:
请注意,这样做违反了文档和接口,因此,如果使用这种未文档化的行为会导致新的、有趣的错误,或者在升级后神秘地中断,请不要感到惊讶。我建议您坚持使用文档化的接口,如果它真的让您如此困扰,请编写构造函数:
function make_thing(a, b c) {
return new Thing({
a: a,
b: b,
c: c
});
}
然后转到更高效的方面。通常的选项
对象有什么问题吗?这是品味的问题,我不喜欢在另一个对象中传递参数。您在这里使用的“初始化”是模型、集合或视图,而不应该在您的问题中提到这一点。最好告诉我们你到目前为止都做了些什么。顺便问一下,内置解决方案有什么问题?