prototypal-inheritance

___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ qstnhdr ___ Wie kann ich eine statische Backbone.Model-Funktion von einer Instanz dieses Modells aufrufen, ohne den Modellnamen anzugeben? ___ tag123backbonejs ___ Backbone.js ist ein JavaScript-Framework mit einer RESTful JSON-Schnittstelle und basiert auf dem MVP-Design (Model-View-Presenter) ___ tag123prototypalheritance ___ Bei der Vererbung von Prototypen wird das Verhalten wiederverwendet, indem vorhandene Objekte, die als Prototypen dienen, geklont werden. JavaScript ist ein sehr gutes Beispiel für prototypbasierte Vererbung in der Praxis. ___ qstntxt ___

Ich habe statische Eigenschaften, auf die ich von Instanzen meiner Backbone.Model-Objekte zugreifen möchte. Ich weiß, dass ich den Elternkonstruktor fest codieren könnte, um die Methode aufzurufen, aber das verhindert, dass ich polymorphe statische Funktionen habe. Ich möchte zum Beispiel die Funktion %code% in %code% bei Bedarf überschreiben können, ohne irgendeinen anderen Code ändern zu müssen.

%Vor%     
___ answer6538048 ___

Hmm. Obwohl der obige Code funktioniert, würde ich es nicht so lassen. Wenn die Funktion über ein Objekt der Klasse logisch zugänglich ist, definieren Sie eine Instanzmethode in der Basisklasse, die die Funktion class / static aufruft. Dies macht den Code sauberer und klarer, denke ich (und die Kunden müssen sich nicht an die etwas arkane Syntax erinnern):

%Vor%     
___ answer6513294 ___

Was funktioniert in Ihrem Beispiel nicht genau? In Firefox und IE bekomme ich zwei Popups mit 'bar', die wie das beabsichtigte Ergebnis aussieht? Der statische Teil scheint sich ebenfalls gut zu verhalten, siehe dieses Spiel .

(Das ist mit der HEAD-Version von Backbone, übrigens; weiß nicht, ob das einen Unterschied macht)

    
___
2
Antworten

Wie kann ich eine statische Backbone.Model-Funktion von einer Instanz dieses Modells aufrufen, ohne den Modellnamen anzugeben?

Ich habe statische Eigenschaften, auf die ich von Instanzen meiner Backbone.Model-Objekte zugreifen möchte. Ich weiß, dass ich den Elternkonstruktor fest codieren könnte, um die Methode aufzurufen, aber das verhindert, dass ich polymorphe statis...
28.06.2011, 18:39