| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
new, y se le pueden asignar propiedades dinámicamente. Los objetos también pueden crearse mediante la asignación de un literal de objeto como, por ejemplo:
var obj:Object = {a:"foo", b:"bar"}Todas las clases que no declaran una clase base explícita amplían la clase Object incorporada.
Puede emplear la clase Object para crear matrices asociativas. En el fondo, una matriz asociativa es una instancia de la clase Object y cada par clave-valor se representa mediante una propiedad y su valor. Otra razón para declarar una matriz asociativa como tipo Object es que permite utilizar un literal de objeto para llenar la matriz asociativa (pero sólo en el momento en que se declara). El ejemplo siguiente crea una matriz asociativa utilizando un literal de objeto, accede a los elementos empleando el operador de punto y el operador de acceso a matriz y, a continuación, añade un nuevo par clave-valor creando una propiedad nueva:
var myAssocArray:Object = {fname:"John", lname:"Public"};
trace(myAssocArray.fname); // Output: John
trace(myAssocArray["lname"]); // Output: Public
myAssocArray.initial = "Q";
trace(myAssocArray.initial); // Output: QActionScript 3.0 tiene dos tipos de herencia: herencia de clase y herencia de prototipo:
La herencia de clase y la herencia de prototipo pueden darse simultáneamente, como se muestra en el siguiente ejemplo:
class A {
var x = 1
prototype.px = 2
}
dynamic class B extends A {
var y = 3
prototype.py = 4
}
var b = new B()
b.x // 1 via class inheritance
b.px // 2 via prototype inheritance from A.prototype
b.y // 3
b.py // 4 via prototype inheritance from B.prototype
B.prototype.px = 5
b.px // now 5 because B.prototype hides A.prototype
b.px = 6
b.px // now 6 because b hides B.prototypeMediante el uso de funciones en lugar de clases, puede construir árboles de herencia de prototipo personalizados. Con las clases, el árbol de herencia de prototipo refleja el árbol de herencia de clase. Sin embargo, dado que los objetos prototipo son dinámicos, puede añadir y eliminar propiedades basadas en prototipos en tiempo de ejecución.
Véase también
| Propiedad | Definido por | ||
|---|---|---|---|
| constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada.
| Object | ||
| prototype : Object
[static]
Una referencia al objeto prototipo de una clase u objeto de función.
| Object | ||
| Método | Definido por | ||
|---|---|---|---|
|
Object()
Crea un objeto Object y almacena una referencia al método constructor del objeto en la propiedad constructor del objeto.
| Object | ||
|
Indica si un objeto tiene definida una propiedad especificada.
| Object | ||
|
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro.
| Object | ||
|
Indica si existe la propiedad especificada y si es enumerable.
| Object | ||
|
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle.
| Object | ||
|
Devuelve la representación de cadena del objeto especificado.
| Object | ||
|
Devuelve el valor simple del objeto especificado.
| Object | ||
| constructor | propiedad |
public var constructor:Object
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. Si un objeto es una instancia de una clase, la propiedad constructor contiene una referencia al objeto de la clase. Si un objeto se crea con una función constructora, la propiedad constructor contiene una referencia a la función constructora. No debe confundir una función constructora con un método constructor de una clase. Una función constructora es un objeto Function empleado para crear objetos y es una alternativa al uso de la palabra clave class para definir clases.
Si utiliza la palabra clave class para definir una clase, se asigna al objeto prototipo de la clase una propiedad llamada constructor que contiene una referencia al objeto de la clase. Una instancia de la clase hereda esta propiedad del objeto prototipo. Por ejemplo, el código siguiente crea una nueva clase, A y una instancia de clase llamada myA:
dynamic class A {}
trace(A.prototype.constructor); // [class A]
trace(A.prototype.constructor == A); // true
var myA:A = new A();
trace(myA.constructor == A); // trueLos usuarios avanzados pueden optar por utilizar la palabra clave function en lugar de la palabra clave class para definir un objeto Function que puede utilizarse como plantilla para crear objetos. Dicha función se denomina función constructora porque puede utilizarse conjuntamente con el operador new para crear objetos. Si utiliza la palabra clave function para crear una función constructora, se asigna a su objeto prototipo una propiedad llamada constructor que contiene una referencia a la función constructora. Si posteriormente utiliza la función constructora para crear un objeto, el objeto heredará la propiedad constructor del objeto prototipo de la función constructora. Por ejemplo, el código siguiente crea una nueva función constructora, f, y un objeto llamado myF:
function f() {}
trace(f.prototype.constructor); // function Function() {}
trace(f.prototype.constructor == f); // true
var myF = new f();
trace(myF.constructor == f); // trueNota: la propiedad constructor es de escritura, lo que significa que el código del usuario puede cambiar de valor con una sentencia de asignación. No es recomendable el cambio de valor de la propiedad constructor, pero, si escribe código que dependa del valor de la propiedad constructor, deberá asegurarse de que el valor no se restablece. El valor sólo puede cambiar cuando se accede a la propiedad mediante el objeto prototipo (por ejemplo, className.prototype.constructor).
Véase también
| prototype | propiedad |
public static var prototype:Object
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Una referencia al objeto prototipo de una clase u objeto de función. La propiedad prototype se crea y asocia automáticamente a cualquier clase u objeto de función que cree. Esta propiedad se considera estática porque es específica de la clase o función que usted crea. Por ejemplo, si crea una clase, todas las instancias de la clase compartirán el valor de la propiedad prototype y sólo será accesible como propiedad de clase. Las instancias de la clase no pueden acceder directamente a la propiedad prototype.
El objeto prototipo de una clase es una instancia especial de dicha clase que proporciona un mecanismo para compartir el estado entre todas las instancias de una clase. En tiempo de ejecución, cuando se encuentra una propiedad en una instancia de clase, se comprueba dicha propiedad en el delegado (delegate), que es el objeto prototipo de la clase. Si el objeto prototipo no contiene la propiedad, el proceso continúa con la comprobación del delegado del objeto prototipo en niveles superiores sucesivos en la jerarquía, hasta que Flash Player encuentra la propiedad.
Nota: en ActionScript 3.0, la herencia de prototipo no es el mecanismo principal de herencia. La herencia de clase, a través de la cual se heredan propiedades fijas en las definiciones de clases, es el principal mecanismo de herencia en ActionScript 3.0.
Véase también
| Object | () | constructor |
public function Object()
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Crea un objeto Object y almacena una referencia al método constructor del objeto en la propiedad constructor del objeto.
Véase también
| hasOwnProperty | () | método |
AS3 function hasOwnProperty(name:String):Boolean
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Indica si un objeto tiene definida una propiedad especificada. Este método devuelve true si el objeto de destino tiene una propiedad que coincide con la cadena especificada por el parámetro name, y false en caso contrario. Los siguientes tipos de propiedades provocan que este método devuelva true para objetos que son instancias de una clase (en lugar de objetos de clase):
dynamic.Los siguientes tipos de propiedades provocan que este método devuelva false para objetos que son instancias de una clase:
valueOf() porque existe en Object.prototype, que forma parte de la cadena de prototipo de la clase Array. Aunque puede utilizar valueOf() en una instancia de Array, el valor devuelto por hasOwnProperty("valueOf") para dicha instancia es false.ActionScript 3.0 también tiene objetos de clase que son representaciones directas de las definiciones de clase. Cuando se le llama en objetos de clase, el método hasOwnProperty() devuelve true sólo si una propiedad es estática y está definida en dicho objeto de clase. Por ejemplo, si crea una subclase de Array denominada CustomArray y define una propiedad estática en CustomArray denominada foo, una llamada a CustomArray.hasOwnProperty("foo") devolverá true. No obstante, en el caso de la propiedad estática DESCENDING definida en la clase Array, una llamada a CustomArray.hasOwnProperty("DESCENDING") devolverá false.
Nota: los métodos de la clase Object se crean dinámicamente en el prototipo de Object. Para redefinir este método en una subclase de Object, no utilice la palabra clave override. Por ejemplo, una subclase de Object implementa function hasOwnProperty():Boolean en lugar de utilizar una sustitución de la clase base.
Parámetros
name:String — La propiedad del objeto.
|
Boolean — Si el objeto de destino tiene la propiedad especificada por el parámetro name, este valor es true; en caso contrario es false.
|
| isPrototypeOf | () | método |
AS3 function isPrototypeOf(theClass:Object):Boolean
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. Este método devuelve true si el objeto está presente en la cadena de prototipo del objeto especificado por el parámetro theClass. El método devuelve false si el objeto de destino no está presente en la cadena de prototipo del objeto theClass y también si el parámetro theClass no es un objeto.
Nota: los métodos de la clase Object se crean dinámicamente en el prototipo de Object. Para redefinir este método en una subclase de Object, no utilice la palabra clave override. Por ejemplo, una subclase de Object implementa function isPrototypeOf():Boolean en lugar de utilizar una sustitución de la clase base.
Parámetros
theClass:Object — La clase a la que puede referirse el objeto especificado.
|
Boolean — Si el objeto está presente en la cadena de prototipo del objeto especificado por el parámetro theClass, este valor es true, en caso contrario este valor es false.
|
| propertyIsEnumerable | () | método |
AS3 function propertyIsEnumerable(name:String):Boolean
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Indica si existe la propiedad especificada y si es enumerable. Si su valor es true, la propiedad existe y puede enumerarse en un bucle for..in. La propiedad debe existir en el objeto de destino porque este método no comprueba la cadena de prototipo del objeto de destino.
Aunque las propiedades que se crean son enumerables, las propiedades incorporadas no suelen ser enumerables.
Nota: los métodos de la clase Object se crean dinámicamente en el prototipo de Object. Para redefinir este método en una subclase de Object, no utilice la palabra clave override. Por ejemplo, una subclase de Object implementa function propertyIsEnumerable():Boolean en lugar de utilizar una sustitución de la clase base.
Parámetros
name:String — La propiedad del objeto.
|
Boolean — Si la propiedad especificada por el parámetro name es enumerable, este valor es true, en caso contrario, el valor es false.
|
| setPropertyIsEnumerable | () | método |
public function setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. La propiedad debe existir en el objeto de destino porque este método no comprueba la cadena de prototipo del objeto de destino.
Parámetros
name:String — La propiedad del objeto.
|
|
isEnum:Boolean (default = true) — Si se define como false, la propiedad dinámica no aparece en los bucles for..in y el método propertyIsEnumerable() devuelve false.
|
Véase también
| toString | () | método |
public function toString():String
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Devuelve la representación de cadena del objeto especificado.
Nota: los métodos de la clase Object se crean dinámicamente en el prototipo de Object. Para redefinir este método en una subclase de Object, no utilice la palabra clave override. Por ejemplo, una subclase de Object implementa function toString():String en lugar de utilizar una sustitución de la clase base.
String — Una representación de cadena del objeto.
|
| valueOf | () | método |
public function valueOf():Object
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Devuelve el valor simple del objeto especificado. Si este objeto no tiene un valor simple, se devuelve el propio objeto.
Nota: los métodos de la clase Object se crean dinámicamente en el prototipo de Object. Para redefinir este método en una subclase de Object, no utilice la palabra clave override. Por ejemplo, una subclase de Object implementa function valueOf():Object en lugar de utilizar una sustitución de la clase base.
Object — El valor simple de este objeto o el propio objeto.
|
Véase también
ObjectExample y Circle para demostrar la naturaleza dinámica de la clase Object y para ver cómo se pueden transformar los objetos de valor en objetos Shape y, después, añadirlos en el escenario en las coordenadas x/y especificadas.
El ejemplo crea los objetos de valor firstInitObj y secondInitObj. La clase personalizada Circle acepta el objeto de valor y ejecuta un bucle mientras define sus propiedades internas coincidentes según las definidas en el objeto valor.
package {
import flash.display.Sprite;
public class ObjectExample extends Sprite {
public function ObjectExample() {
var firstInitObj:Object = new Object();
firstInitObj.bgColor = 0xFF0000;
firstInitObj.radius = 25;
firstInitObj.xCenter = 25;
firstInitObj.yCenter = 25;
var firstCircle:Circle = new Circle(firstInitObj);
addChild(firstCircle);
firstCircle.x = 50;
firstCircle.y = 50;
var secondInitObj:Object = {bgColor:0xCCCCCC, radius:50, xCenter:50, yCenter:50};
var secondCircle:Circle = new Circle(secondInitObj);
addChild(secondCircle);
secondCircle.x = 100;
secondCircle.y = 100;
}
}
}
import flash.display.Shape;
class Circle extends Shape {
public var bgColor:Number = 0xFFFFFF;
public var radius:Number = 0;
public var xCenter:Number = 0;
public var yCenter:Number = 0;
public function Circle(initObj:Object) {
for(var i:String in initObj) {
this[i] = initObj[i];
}
draw();
}
public function draw():void {
graphics.beginFill(bgColor);
graphics.drawCircle(xCenter, yCenter, radius);
graphics.endFill();
}
}
Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios
Página actual: http://livedocs.adobe.com/flash/9.0_es/ActionScriptLangRefV3/Object.html