Ich hatte bereits darüber gesprochen , wie die Methode shuffle () in Javascript und Actionscript umsetzen . Ich erkannte, tuttaavia, nicht darauf hinzuweisen, dass es in der Lage, Actionscript, Javascript in gleicher Weise zu erweitern, ihre Aufgabe ist Array :
1 2 3 | prototype . shuffle = function ( ) { Array . Prototyp. shuffle = function () { var j : uint , x :*, i : uint = this . length ; i ; j = Math . floor ( Math . random ( ) * i ) , x = this [ -- i ] , this [ i ] = this [ j ] , this [ j ] = x ) ; for (var j: uint , x: * i: uint = dieser Länge, i, j =. Math floor (. Math random () * i), x = this [- i], das [i] =. Diese [j], das [j] = x); } |
Dieser Code kann auch innerhalb einer Klasse eingesetzt werden, zum Beispiel im Konstruktor:
1 2 3 4 5 6 7 8 9 | package { Hello extends MovieClip { public class Hallo erstreckt MovieClip { Hello ( ) { public function hallo () { prototype . shuffle = function ( ) { Array . Prototyp. shuffle = function () { var j : uint , x :*, i : uint = this . length ; i ; j = Math . floor ( Math . random ( ) * i ) , x = this [ -- i ] , this [ i ] = this [ j ] , this [ j ] = x ) ; for (var j: uint , x: * i: uint = dieser Länge, i, j =. Math floor (. Math random () * i), x = this [- i], das [i] =. Diese [j], das [j] = x); } } } } |
: Um dann diese "Verlängerung" ist einfach die meotodo shuffle() von jeder Instanz eines array :










Hallo, für eine Weile, dass ich lesen Ihren Blog, die sehr gepflegt ist und hat viele Tipps und Ideen sind nicht schlecht. Ich habe dich etwas fragen zu diesem Beitrag, eine Sache, die ich nicht klar bin, was den Vorteil gibt es bei der Erweiterung einer Klasse über den Parameter
prototype?Ich verwenden in der Regel eine Klasse
"MyArray extends Array", die weitere Methoden, die ich brauche implementiert und in meine Projekte, die,. ) (Vielen Dank an den Polymorphismus Funktionen, die ein Objekt wollenArraysehen es alsArray)Mit
prototypeIch denke an 'dirty' Objekte in mein Design (und abgesehen, die enthalten zu sein elegant wie möglich sein sollte? In den Konstruktor der Document-Klasse?)Ich grüße euch und danke für die info
@ Charles:
Hallo Karl, gute Beobachtung! Die Verwendung von
prototypegeht zurück auf die Tage, als es noch ein ActionScript-Objekt-orientierte Sprache "reifen", wie es Version 3.0 ist. per creare una nuova classeArraypersonalizzata come hai indicato tu. Doch auch heute, die Verwendung vonprototypeunterscheidet sich von der Verwendungextends, um eine neue Klasse zu erstellenArray, wie Sie angegeben haben, angepasst haben. Der Vorteil in der Tat, liegt in der Möglichkeit der Verlängerung wahllos allearray, ohne den Typ der Klasse angeben. In der Methode, die Sie Ihnen, was in Ordnung ist und richtig verwendet werden, ist die Verwendung von speziellen Methoden oder Eigenschaften innerhalb der Klasse gebunden (MyArrayzum Beispiel). Mit dem Einsatz von Prototypen sind jedoch alle Arrays erweitert, auch solche, wie geschaffen:statt zu schreiben
all'uso di classi estese: Der Vorteil der Nutzung oder Nichtnutzung
proptotypehängt von der Situation, aber im Allgemeinen gibt es zwei Gründe für die BevorzugungproptotypeVerwendung der erweiterten Klassen:-
proptotypeweniger Code zu schreiben, nur die Definition- Code bereits geschrieben wird die Erweiterung, ohne zu bearbeiten
Der zweite Punkt, meiner Meinung nach, ist der interessanteste. ) su codice già scritto, senza doverlo modificare. Damit können Sie erweitern die Basis Actionscriopt Objekte (z. B.
MovieClipoderArray) der Code bereits geschrieben, keine Notwendigkeit für die Bearbeitung.o nel frame 0 a seconda del tipo di progetto. Im Hinblick auf die Einbeziehung der Code verwende ich eine einfache Datei (Typ
array_ext.as), dass der Hersteller der auchDocument Classin den Rahmen, oder 0, je nach Art des Projekts.Ich hoffe, dass beantwortet Ihre Fragen ... wenn Sie weitere Fragen haben, kontaktieren Sie uns bitte.