Ich möchte einen Beispielcode basierend auf 'Mixin Pattern' machen.Mixin Pattern mit Unterstrich, _.extend Schlüsselwort
Ich habe einen Code wie folgt.
define(["jquery","underscore", "backbone"], function($, _,Backbone) {
//Mixin :
//
/* Sometimes you have the same functionality for multiple objects
* and it doesn’t make sense to wrap your objects in a parent object.
* For example, if you have two views that share methods but don’t
* – and shouldn’t – have a shared parent view.
*/
//I can define an object that has attributes and methods that can be shared across different classes.
//This is called a mixin.
//Mixin Object
var C = Backbone.Model.extend({
c: function() {
console.log("We are different but have C-Method shared");
}
});
//To be Mixin-ed Object-1
var A = Backbone.Model.extend({
a: 'A',
});
//To be Mixin-ed Object-2
var B = Backbone.Model.extend({
b: 'B'
});
//underscore
_.extend(A.prototype, C);
_.extend(B.prototype, C);
return Backbone.Model.extend({
initialize: function(){
var testA = new A();
testA.c();
var testB = new B();
testA.c();
}
});
});
Wenn ich diesen Code ausführen, kommt es eine Fehlermeldung, ‚testA.c ist keine Funktion‘. Nach einigen Beispielcodes zu urteilen, die ich studierte, sollte dies funktionieren. Können Sie mich bitte über den Grund informieren, warum dieser Code nicht so detailliert wie möglich funktioniert?
Sie haben '_c' definiert, aber Sie rufen' c' ('testA.c()') auf. Ich denke, sie sollten gleich sein. –
Ich habe es geändert ... aber es funktioniert nicht unter dem gleichen Fehler. Ich denke, es gibt einen anderen Grund. –