Yo ya había hablado acerca de cómo implementar el método de reproducción aleatoria () en JavaScript y ActionScript . Me di cuenta, tuttaavia, no señalando que es capaz de extender Actionscript, Javascript de la misma manera, su objetivo Array :
1 2 3 | prototype . shuffle = function ( ) { Amplia . prototipo. barajar = 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 = longitud este, i, j =. Matemáticas piso (. Matemáticas random () * i), x = esto [- i], el [i] =. este [j], este [j] = x); } |
Este código también se puede insertar dentro de una clase, por ejemplo en el constructor:
1 2 3 4 5 6 7 8 9 | package { Hello extends MovieClip { public class Hola extiende MovieClip { Hello ( ) { Hola función pública () { prototype . shuffle = function ( ) { Amplia . prototipo. barajar = 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 = longitud este, i, j =. Matemáticas piso (. Matemáticas random () * i), x = esto [- i], el [i] =. este [j], este [j] = x); } } } } |
: A continuación, utilizar esta "extensión" es simplemente llamar a la meotodo shuffle() desde cualquier instancia de una array :










Hola, hace tiempo que leo tu blog, que está muy bien cuidado y tiene un montón de consejos e ideas no son malas. Tengo que preguntarte algo en este blog, una cosa que no me queda claro qué ventaja hay en la extensión de una clase a través del parámetro
prototype?Me suelen utilizar una clase de
"MyArray extends Array", que implementa los métodos adicionales que necesita, y en mis proyectos, los. ) (Muchas gracias a las funciones de polimorfismo que desea que un objetoArraylo ven como unaArray)Utilizando
prototypepienso en "sucio" Objetos de mi diseño (y aparte, que debe ser incluido para ser más elegante posible? En el constructor de la clase de documento?)Yo te saludo y gracias por la info
@ Carlos:
Hola Carlos, buena observación! El uso de
prototypese remonta a los días en que era todavía una Actionscript lenguaje orientado a objetos "maduro", ya que es la versión 3.0. per creare una nuova classeArraypersonalizzata come hai indicato tu. Sin embargo, aún hoy en día, el uso deprototypese diferencia del uso de laextendspara crear una nueva claseArray, como usted ha indicado ha personalizado. La ventaja, de hecho, radica en la posibilidad de extender indiscriminadamente a todas lasarray, sin tener que especificar el tipo de clase. En el método que ha utilizado usted, que está bien y es preciso, el uso de métodos o propiedades específicas está obligado dentro de su clase (MyArraypor ejemplo). Con el uso de prototipos, sin embargo, todos los arreglos se extienden, incluso los creados como:en lugar de escribir
all'uso di classi estese: La ventaja de usar o no
proptotypedepende de la situación, pero en general hay dos razones para preferirproptotypeuso de clases extendidas:-
proptotypemenos código a escribir, sólo la definición de- Código ya escrito tiene la extensión sin tener que editar
El segundo punto, en mi opinión, es la más interesante. ) su codice già scritto, senza doverlo modificare. Que permite ampliar los objetos Actionscriopt base (como
MovieClipoArray) de código ya escrito, sin necesidad de editarlos.o nel frame 0 a seconda del tipo di progetto. En cuanto a la inclusión del código, yo uso un simple de archivos (tipo
array_ext.as) que incluye al fabricante de laDocument Classen el marco, o 0, dependiendo del tipo de proyecto.Espero haber respondido a sus preguntas ... si usted tiene preguntas adicionales, por favor póngase en contacto con nosotros.