2016-07-15 15 views
0

Ich versuche folgende Struktur von Klassen mit Backbone.js Vererbungsmodell zu erstellen:Wie erweitert man die Klasse, die Backbone.Events erbt?

Backbone.Events -> Eltern -> Child

Kind von den Eltern initialize nennen soll, aber leider funktioniert nicht. Übergeordnete Methoden und Eigenschaften sind nicht sichtbar. Bitte helfen Sie.

Mein Code

var Parent = function() { 
    this.initialize.apply(this, arguments); 
}; 

_.extend(Parent.prototype, Backbone.Events, { 

    initialize: function() { 
     // parent init 
    }, 
}); 

var Child = function() { 
    this.initialize.apply(this, arguments); 
}; 

_.extend(Child.prototype, Parent, { 
    /* Inherits Parent */ 

    initialize: function() { 
     // need to call `parent init` code 
     // need to init myself (child) 
     // DOES NOT WORK 
     // Parent methods and properties are not visible 
     Parent.prototype.initialize.call(this, arguments); 
    } 
}); 

Antwort

1

einfach den folgenden Ansatz verwenden:

function Parent() { 
    this.initialize.apply(this, arguments); 
}; 

_.extend(Parent.prototype, Backbone.Events, { 

    initialize: function() { 
     // parent init 
    }, 
}); 

// pick extend method from Backbone 
Parent.extend = Backbone.Model.extend; 

var Child = Parent.extend({ 
    initialize: function() { 
     // Parent methods and properties are visible 
     Parent.prototype.initialize.apply(this, arguments); 
    } 
}); 
+0

Danke, Artem. Kannst du Backbone.Model.extend im backbone.js-Quellcode auf meine Ausbildung verweisen? Ich kann es nicht finden. –

+1

https://github.com/jashkenas/backbone/blob/master/backbone.js#L1929 –