Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
new
gebruiken. Er kunnen dynamisch eigenschappen aan deze objecten worden toegewezen. Objecten kunnen ook worden gemaakt door een letterlijk object toe te wijzen:
var obj:Object = {a:"foo", b:"bar"}
Alle klassen die geen expliciete basisklasse declareren, breiden de ingebouwde klasse Object uit.
U kunt de klasse Object gebruiken om associatieve arrays te maken. In feite is een associatieve array een instantie van de klasse Object en wordt elk sleutelwaardepaar door een eigenschap en de bijbehorende waarde vertegenwoordigd. Een andere reden om een associatieve array met een gegevenstype Object te declareren, is dat u een letterlijk object kunt gebruiken om uw associatieve array te vullen (maar alleen op het moment dat u deze declareert). In het volgende voorbeeld wordt een associatieve array met een letterlijk object gemaakt, wordt toegang tot items verkregen met zowel de puntoperator als de operator voor arraytoegang en wordt vervolgens een nieuw sleutelwaardepaar toegevoegd door een nieuwe eigenschap te maken:
var myAssocArray:Object = {fname:"John", lname:"Public"}; trace(myAssocArray.fname); // John trace(myAssocArray["lname"]); // Public myAssocArray.initial = "Q"; trace(myAssocArray.initial); // Q
ActionScript 3.0 bevat twee typen overerving: klasseovererving en prototypeovererving:
- Klasseovererving - dit is het belangrijkste overervingsmechanisme en ondersteunt overerving van vaste eigenschappen. Een vaste eigenschap is een variabele, constante of methode die is gedeclareerd als deel van een klassedefinitie. Elke klassedefinitie wordt nu vertegenwoordigd door een speciaal klasseobject dat informatie opslaat over de klasse.
- Prototypeovererving - dit was de enige overervingsmethode in lagere versies van ActionScript en fungeert in ActionScript 3.0 als een alternatieve overervingsmethode. Elke klasse heeft een hieraan gekoppeld prototypeobject en de eigenschappen van het prototypeobject worden door alle instanties van de klasse gedeeld. Wanneer een instantie van een klasse wordt gemaakt, bevat deze een verwijzing naar het prototypeobject van de klasse. Deze verwijzing fungeert als een koppeling tussen de instantie en het daaraan gekoppelde prototypeobject van de klasse. Wanneer bij uitvoering een eigenschap niet wordt gevonden op een klasse-instantie, wordt de gedelegeerde (het prototypeobject van de klasse) voor die eigenschap gecontroleerd. Wanneer het prototype-object de eigenschap niet bevat, gaat het proces door via het controleren van de gedelegeerde van het prototype-object op een steeds hoger niveau in de hiërarchie, totdat Flash-runtime de eigenschap vindt.
Zowel klasseovererving en prototypeovererving kunnen gelijktijdig bestaan, zoals getoond in het volgende voorbeeld:
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.prototype
Wanneer u functies gebruikt in plaats van klassen, kunt u aangepaste prototypeoverervingstructuren maken. In het geval van klassen, weerspiegelt de prototypeoverervingstructuur de klasseoverervingstructuur. Omdat prototypeobjecten echter dynamisch zijn, kunt u de eigenschappen die op een prototype zijn gebaseerd bij uitvoering toevoegen en verwijderen.
Verwante API-elementen
Eigenschap | Gedefinieerd door | ||
---|---|---|---|
constructor : Object
Verwijzing naar het klasseobject of de constructorfunctie van een bepaalde objectinstantie. | Object | ||
prototype : Object [statisch]
Een verwijzing naar het prototypeobject van een klasse of functieobject. | Object |
Methode | Gedefinieerd door | ||
---|---|---|---|
Object()
Maakt een object Object en slaat een verwijzing naar de constructormethode van het object op in de constructoreigenschap van het object. | Object | ||
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd. | Object | ||
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven. | Object | ||
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd. | Object | ||
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in. | Object | ||
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies. | Object | ||
Retourneert een tekenreeksrepresentatie van het opgegeven object. | Object | ||
Retourneert de primitieve waarde van het opgegeven object. | Object |
constructor | eigenschap |
public var constructor:Object
Runtimeversies: | Flash Player 9, Flash Lite 4, Flash Player 9, AIR 1.0 |
Verwijzing naar het klasseobject of de constructorfunctie van een bepaalde objectinstantie. Wanneer een object een instantie van een klasse is, bevat de eigenschap constructor
een verwijzing naar het klasseobject. Wanneer een object is gemaakt met een constructorfunctie, bevat de eigenschap constructor
een verwijzing naar de constructorfunctie. Haal een constructorfunctie en een constructormethode van een klasse niet door elkaar. Een constructorfunctie is een object Function dat wordt gebruikt om objecten te maken en biedt een alternatief voor het trefwoord class
dat wordt gebruikt om klassen te definiëren.
Wanneer u het trefwoord class
gebruikt om een klasse te definiëren, wordt aan het prototypeobject van de klasse een eigenschap met de naam constructor
toegewezen, die een verwijzing naar het klasseobject bevat. Een instantie van de klasse overerft deze eigenschap van het prototypeobject. De volgende code maakt bijvoorbeeld de nieuwe klasse A
en een klasseinstantie met de naam 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); // true
Gevorderde gebruikers kunnen voor het trefwoord function
kiezen in plaats van voor het trefwoord class
om een object Function te definiëren dat als een sjabloon kan worden gebruikt voor het maken van objecten. Een dergelijke functie wordt een constructorfunctie genoemd omdat u deze samen met de operator new
kunt gebruiken om objecten te maken. Wanneer u het trefwoord function
gebruikt om een constructorfunctie te maken, wordt aan het prototypeobject een eigenschap met de naam constructor
toegewezen, die een verwijzing naar de constructorfunctie bevat. Wanneer u vervolgens de constructorfunctie gebruikt om een object te maken, overerft het object de eigenschap constructor
van het prototypeobject van de constructorfunctie. De volgende code maakt bijvoorbeeld de nieuwe constructorfunctie f
en een object met de naam myF
:
function f() {} trace(f.prototype.constructor); // function Function() {} trace(f.prototype.constructor == f); // true var myF = new f(); trace(myF.constructor == f); // true
Opmerking: de eigenschap constructor
is beschrijfbaar, wat inhoudt dat de gebruikerscode zijn waarde door middel van een toewijzigingsinstructie kan wijzigen. Het wijzigen van de waarde van constructor
wordt niet aangeraden, maar wanneer u code schrijft die afhankelijk is van de waarde van de eigenschap constructor
, moet u ervoor zorgen dat de waarde niet wordt hersteld. De waarde kan alleen worden gewijzigd wanneer via het prototypeobject toegang wordt verkregen tot de eigenschap (bijvoorbeeld className.prototype.constructor
).
Als u toegang krijgt tot de eigenschap constructor
en in de strikte modus compileert, wordt een fout weergegeven tijdens het compileren omdat de eigenschap constructor afhankelijk is van het object prototype, een runtime-entiteit. Als u de standaardmodus gebruikt of als de klassebeschrijving "dynamisch" opgeeft, wordt de code geretourneerd zonder dat een fout wordt gegenereerd.
Verwante API-elementen
prototype | eigenschap |
public static var prototype:Object
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Een verwijzing naar het prototypeobject van een klasse of functieobject. De eigenschap prototype
wordt automatisch gemaakt en gekoppeld aan de klasse of functieobject die u maakt. Deze eigenschap is statisch in die zin dat deze specifiek is voor de klasse of functie die u maakt. Wanneer u bijvoorbeeld een klasse maakt, wordt de waarde van de eigenschap prototype
gedeeld door alle instanties van de klasse en is deze alleen toegankelijk als een klasse-eigenschap. Instanties van de klasse hebben niet direct toegang tot de eigenschap prototype
.
Een prototypeobject van een klasse is een speciale instantie van de klasse die een methode biedt waarmee een status door alle instanties van een klasse kan worden gedeeld. Wanneer bij uitvoering een eigenschap niet wordt gevonden op een klasse-instantie, wordt de gedelegeerde (het prototypeobject van de klasse) voor die eigenschap gecontroleerd. Wanneer het prototype-object de eigenschap niet bevat, gaat het proces door via het controleren van de gedelegeerde van het prototype-object op een steeds hoger niveau in de hiërarchie, totdat Flash-runtime de eigenschap vindt.
Opmerking: in ActionScript 3.0 is prototypeovererving niet het belangrijkste mechanisme voor overerving. Klasseovererving, dat werkt via de overerving van vaste eigenschappen in klassedefinities, is het belangrijkste overervingsmechanisme in ActionScript 3.0.
Object | () | Constructor |
public function Object()
Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Maakt een object Object gemaakt en slaat een verwijzing naar de constructormethode van het object op in de constructoreigenschap
van het object.
hasOwnProperty | () | methode |
AS3 function hasOwnProperty(name:String):Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd. Deze methode retourneert true
wanneer het doelobject een eigenschap bevat die overeenkomt met de tekenreeks die via de parameter name
is opgegeven, anders wordt false
geretourneerd. De volgende typen eigenschappen zorgen ervoor dat deze methode true
retourneert voor objecten die instanties van een klasse zijn (in tegenstelling tot klasseobjecten):
- Vaste eigenschappen van een instantie - variabelen, constanten of methoden die zijn gedefinieerd door de klasse van een object die niet statisch zijn;
- Overerfde vaste eigenschappen van een instantie - variabelen, constanten of methoden die door de klasse van een object worden overerfd;
- Dynamische eigenschappen - eigenschappen die aan een object zijn toegevoegd nadat deze is geïnstantieerd (buiten zijn klassedefinitie). Wanneer u dynamische eigenschappen wilt toevoegen, moet de definiërende klasse van het object gedeclareerd zijn met het trefwoord
dynamic
.
De volgende typen eigenschappen zorgen ervoor dat deze methode false
retourneert voor objecten die instanties van een klasse zijn:
- Statische eigenschappen - variabelen, constanten of methoden die zijn gedefinieerd met het trefwoord static in een definiërende klasse van een object of een van zijn superklassen;
- Eigenschappen van prototype - eigenschappen die zijn gedefinieerd voor een prototypeobject dat deel is van de prototypeketen van het object. In ActionScript 3.0, wordt de prototypeketen niet gebruikt voor klasseovererving, maar bestaat nog wel als een alternatieve overervingsmethode. Een instantie van de klasse Array heeft bijvoorbeeld toegang tot de methode
valueOf()
, omdat deze bestaat inObject.prototype
en deze is deel van de prototypeketen voor de klasse Array. Hoewel uvalueOf()
kunt gebruiken voor een instantie van Array, is de geretourneerde waarde vanhasOwnProperty("valueOf")
voor die instantiefalse
.
ActionScript 3.0 bevat ook klasseobjecten, dit zijn directe representaties van klassedefinities. Wanneer de methode hasOwnProperty()
wordt aangeroepen voor klasseobjecten, retourneert deze alleen true
wanneer een eigenschap een statische eigenschap is die voor dat klasseobject is gedefinieerd. Wanneer u bijvoorbeeld een subklasse van Array maakt met de naam CustomArray en vervolgens een statische eigenschap in CustomArray definieert met de naam foo
, retourneert een aanroep van CustomArray.hasOwnProperty("foo")
de waarde true
. Voor de statische eigenschap DESCENDING
die is gedefinieerd in de klasse Array, maar een aanroep van CustomArray.hasOwnProperty("DESCENDING")
retourneert false
.
Opmerking: methoden van de klasse Object worden dynamisch gemaakt in het prototype van Object. Wanneer u deze methode opnieuw wilt definiëren in een subklasse van Object, moet u het trefwoord override
niet gebruiken. Bijvoorbeeld, een subklasse van Object implementeert de functie hasOwnProperty():Boolean
in plaats van dat deze de basisklasse overschrijft.
Parameters
name:String — De eigenschap van het object.
|
Boolean — Wanneer het doelobject de eigenschap bevat die is opgegeven door de parameter name , dan is deze waarde true ; anders false .
|
isPrototypeOf | () | methode |
AS3 function isPrototypeOf(theClass:Object):Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven. Deze methode retourneert true
wanneer het object zich in de prototypeketen van het object bevindt dat met de parameter theClass
is opgegeven. De methode retourneert false
wanneer het doelobject niet aanwezig is in de prototypeketen van het object theClass
, maar ook wanneer de parameter theClass
geen object is.
Opmerking: methoden van de klasse Object worden dynamisch gemaakt in het prototype van Object. Wanneer u deze methode opnieuw wilt definiëren in een subklasse van Object, moet u het trefwoord override
niet gebruiken. Bijvoorbeeld, een subklasse van Object implementeert de functie isPrototypeOf():Boolean
in plaats van dat deze de basisklasse overschrijft.
Parameters
theClass:Object — De klasse waarnaar het opgegeven object kan verwijzen.
|
Boolean — Wanneer het object zich in de prototypeketen van het object bevindt, die is opgegeven door de parameter theClass , dan is deze waarde true ; anders false .
|
propertyIsEnumerable | () | methode |
AS3 function propertyIsEnumerable(name:String):Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd. Indien true
, bestaat de eigenschap en kan deze worden gebruikt in een lus for..in
worden opgesomd. De eigenschap moet in het doelobject bestaan, omdat deze methode niet in de prototypeketen van het doelobject zoekt.
Eigenschappen die u maakt, kunnen worden opgesomd, maar ingebouwde eigenschappen kunnen gewoonlijk niet worden opgesomd.
Opmerking: methoden van de klasse Object worden dynamisch gemaakt in het prototype van Object. Wanneer u deze methode opnieuw wilt definiëren in een subklasse van Object, moet u het trefwoord override
niet gebruiken. Bijvoorbeeld, een subklasse van Object implementeert de functie propertyIsEnumerable():Boolean
in plaats van dat deze de basisklasse overschrijft.
Parameters
name:String — De eigenschap van het object.
|
Boolean — Wanneer de eigenschap die is opgegeven door de parameter name kan worden opgesomd, dan is deze waarde true ; anders false .
|
setPropertyIsEnumerable | () | methode |
public function setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in. De eigenschap moet in het doelobject bestaan, omdat deze methode niet in de prototypeketen van het doelobject zoekt.
Parameters
name:String — De eigenschap van het object.
| |
isEnum:Boolean (default = true ) — Wanneer deze ingesteld staat op false , wordt de dynamische eigenschap niet weergegeven in lussen for..in en retourneert de methode propertyIsEnumerable() de waarde false .
|
Verwante API-elementen
toLocaleString | () | methode |
public function toLocaleString():String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies.
De standaardimplementatie van deze methode voert geen locatiespecifieke formattering uit en retourneert dezelfde tekenreeks als toString
. Subklassen moeten, indien geschikt, hun eigen implementatie voor landinstellingen behouden.
Opmerking: methoden van de klasse Object worden dynamisch gemaakt in het prototype van Object. Wanneer u deze methode opnieuw wilt definiëren in een subklasse van Object, moet u het trefwoord override
niet gebruiken. Bijvoorbeeld, een subklasse van Object implementeert de function toLocaleString():String
in plaats van dat deze de basisklasse overschrijft.
String — Een tekenreeksweergave van dit object dat is geformatteerd volgens de lokale conventies.
|
Verwante API-elementen
toString | () | methode |
public function toString():String
Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Retourneert een tekenreeksrepresentatie van het opgegeven object.
Opmerking: methoden van de klasse Object worden dynamisch gemaakt in het prototype van Object. Wanneer u deze methode opnieuw wilt definiëren in een subklasse van Object, moet u het trefwoord override
niet gebruiken. Bijvoorbeeld, een subklasse van Object implementeert de functie toString():String
in plaats van dat deze de basisklasse overschrijft.
String — De tekenreeksrepresentatie van het object.
|
valueOf | () | methode |
public function valueOf():Object
Runtimeversies: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Retourneert de primitieve waarde van het opgegeven object. Wanneer het object geen primitieve waarde heeft, wordt het object zelf geretourneerd.
Opmerking: methoden van de klasse Object worden dynamisch gemaakt in het prototype van Object. Wanneer u deze methode opnieuw wilt definiëren in een subklasse van Object, moet u het trefwoord override
niet gebruiken. Bijvoorbeeld, een subklasse van Object implementeert de functie valueOf():Object
in plaats van dat deze de basisklasse overschrijft.
Object — De primitieve waarde van dit object of het object zelf.
|
Verwante API-elementen
ObjectExample
en Circle
om de dynamische structuur van klasse Object aan te tonen en demonstreert hoe objecten value in objecten Shape kunnen worden getransformeerd, waarna deze op de opgegeven x/y-coördinaten aan het werkgebied worden toegevoegd.
Het voorbeeld maakt de value-objecten firstInitObj
en secondInitObj
. De aangepaste klasse Circle
accepteert en doorloopt de objecten value terwijl deze de overeenkomende interne eigenschappen zodanig instelt dat ze overeenkomen met de instellingen die zijn gedefinieerd in het object value.
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(); } }
Wed Jun 13 2018, 11:42 AM Z