new 演算子シンタックスを使用したコンストラクタで作成され、プロパティを動的に割り当てることができます。また、次のようにオブジェクトリテラルを割り当てて作成することもできます。
var obj:Object = {a:"foo", b:"bar"}明示的な基本クラスを宣言していないクラスはすべて、ビルトインの Object クラスを拡張します。
Object クラスを使用して、結合配列を作成できます。基本的に、結合配列は Object クラスのインスタンスであり、キー値ペアはプロパティとその値という形式で表現されます。Object データタイプを使用して結合配列を宣言する別の理由は、そうすると、オブジェクトリテラルを使用して結合配列にデータを設定できるからです (ただし、宣言時のみ)。次の例では、オブジェクトリテラルを使用して結合配列を作成し、ドット演算子と配列アクセス演算子を両方とも使用して項目にアクセスします。その後、新しいプロパティを作成することで新しいキー値ペアを追加します。
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 には、クラス継承とプロトタイプ継承の 2 つのタイプの継承があります。
次の例に示すように、クラス継承とプロトタイプ継承は共存可能です。
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クラスの代わりに関数を使用すると、カスタムプロトタイプ継承ツリーを作成できます。クラスを使用すると、プロトタイプ継承ツリーはクラス継承ツリーをミラーします。ただし、プロトタイプオブジェクトは動的であるため、プロトタイプベースのプロパティを実行時に追加および削除できます。
関連項目
| プロパティ | 定義 | ||
|---|---|---|---|
| constructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
| Object | ||
| prototype : Object
[static]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
| Object | ||
| メソッド | 定義 | ||
|---|---|---|---|
| Object()
Object オブジェクトを作成し、そのオブジェクトのコンストラクタメソッドへの参照をオブジェクトの
constructor プロパティに格納します。 | Object | ||
| hasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | ||
| isPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | ||
| propertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
| Object | ||
| setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | ||
| toString():String
指定されたオブジェクトのストリング表現を返します。
| Object | ||
| valueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
| Object | ||
| constructor | プロパティ |
public var constructor:Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。オブジェクトがクラスのインスタンスの場合、constructor プロパティはクラスオブジェクトへの参照を保持します。オブジェクトがコンストラクタ関数で作成されている場合、constructor プロパティはコンストラクタ関数への参照を保持します。コンストラクタ関数と、クラスのコンストラクタメソッドとを混同しないように注意してください。コンストラクタ関数は、オブジェクトの作成に使用する Function オブジェクトで、クラスの定義に class キーワードを使用することの代わりになります。
class キーワードを使用してクラスを定義している場合、クラスのプロトタイプオブジェクトには、クラスオブジェクトへの参照を保持する constructor という名前のプロパティが割り当てられます。クラスのインスタンスは、プロトタイプオブジェクトからこのプロパティを継承します。たとえば、次のコードでは新しいクラス A、および 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上級ユーザーの場合は、class キーワードの代わりに function キーワードを使用して、オブジェクト作成のテンプレートとして使用可能な Function オブジェクトを定義できます。このような関数は、new 演算子と組み合わせてオブジェクトを作成できるため、コンストラクタ関数と呼ばれています。function キーワードを使用してコンストラクタ関数を作成する場合、そのプロトタイプオブジェクトには、コンストラクタ関数への参照を保持する constructor という名前のプロパティが割り当てられます。次に、コンストラクタ関数を使用してオブジェクトを作成すると、そのオブジェクトはコンストラクタ関数のプロトタイプオブジェクトから constructor プロパティを継承します。たとえば、次のコードでは新しいコンストラクタ関数 f、および myF という名前のオブジェクトを作成します。
function f() {}
trace(f.prototype.constructor); // function Function() {}
trace(f.prototype.constructor == f); // true
var myF = new f();
trace(myF.constructor == f); // trueメモ :constructor プロパティは書き込み可能です。つまり、割り当てステートメントを使用してユーザーコードで値を変更できます。constructor プロパティの値の変更はお勧めしませんが、constructor プロパティの値に依存したコードを書く場合は、その値がリセットされないようにする必要があります。プロトタイプオブジェクト (たとえば、className.prototype.constructor) を使用してプロパティにアクセスするときにのみ、この値を変更できます。
関連項目
| prototype | プロパティ |
public static var prototype:Object
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。prototype プロパティは自動的に作成され、作成したクラスまたは関数オブジェクトに割り当てられます。このプロパティは、作成したクラスまたは関数に固有であるという点で静的です。たとえば、クラスを作成すると、prototype プロパティの値は、そのクラスのすべてのインスタンスで共有され、クラスプロパティとしてのみアクセスできます。クラスのインスタンスは、prototype プロパティに直接アクセスできません。
クラスのプロトタイプオブジェクトは、そのクラスの特別なインスタンスであり、クラスのすべてのインスタンス間で状態を共有するためのメカニズムを提供します。実行時に、クラスインスタンスにプロパティが見つからない場合は、委譲先であるクラスのプロトタイプオブジェクトにそのプロパティがないかがチェックされます。プロトタイプオブジェクトにもない場合は、そのプロパティが見つかるまで、プロトタイプオブジェクトの委譲先でチェックを行うという処理が階層の上位に向かって連続的に継続されます。
メモ: ActionScript 3.0 では、プロトタイプ継承は主要な継承メカニズムではありません。ActionScript 3.0 での主要な継承メカニズムは、クラス定義の固定プロパティを継承するクラス継承です。
関連項目
| Object | () | コンストラクタ |
public 関数 Object()
Object オブジェクトを作成し、そのオブジェクトのコンストラクタメソッドへの参照をオブジェクトの constructor プロパティに格納します。
関連項目
| hasOwnProperty | () | メソッド |
AS3 function hasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。ターゲットオブジェクトに name パラメータで指定されたストリングに一致するプロパティがある場合は true を返します。それ以外の場合は false を返します。次のタイプのプロパティについては、オブジェクトがクラスオブジェクトではなく、クラスのインスタンスである場合に true が返されます。
dynamic キーワードを使用して、オブジェクトを定義しているクラスを宣言する必要があります。次のタイプのプロパティについては、オブジェクトがクラスのインスタンスである場合に false が返されます。
Object.prototype に存在するため、valueOf() メソッドにアクセスできます。Array のインスタンスに対して valueOf() を使用できますが、そのインスタンスに対する hasOwnProperty("valueOf") の戻り値は false になります。また、ActionScript 3.0 には、クラス定義の直接的な表現であるクラスオブジェクトがあります。hasOwnProperty() メソッドをクラスオブジェクトに対して呼び出すと、プロパティがそのクラスオブジェクトに定義された静的プロパティである場合にのみ、true が返されます。たとえば、CustomArray という Array のサブクラスを作成し、CustomArray に foo という静的プロパティを定義した場合、CustomArray.hasOwnProperty("foo") を呼び出すと true が返されます。ただし、Array クラスに定義した静的プロパティ DESCENDING の場合、CustomArray.hasOwnProperty("DESCENDING") を呼び出すと、false が返されます。
メモ: Object クラスのメソッドは、Object のプロトタイプに動的に作成されます。Object のサブクラスでこのメソッドを再定義する場合は、override キーワードを使用しないでください。たとえば、Object のサブクラスでは、基本クラスのオーバーライドを使用する代わりに function hasOwnProperty():Boolean が実装されます。
name:String — オブジェクトのプロパティです。
|
Boolean —
ターゲットオブジェクトに name パラメータで指定されたプロパティがある場合、この値は true になり、それ以外の場合は false になります。
|
| isPrototypeOf | () | メソッド |
AS3 function isPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。このメソッドは、オブジェクトが theClass パラメータで指定されたオブジェクトのプロトタイプチェーン内にある場合に true を返します。ターゲットオブジェクトが theClass オブジェクトのプロトタイプチェーン内にない場合、および theClass パラメータがオブジェクトでない場合も、false を返します。
メモ: Object クラスのメソッドは、Object のプロトタイプに動的に作成されます。Object のサブクラスでこのメソッドを再定義する場合は、override キーワードを使用しないでください。たとえば、Object のサブクラスでは、基本クラスのオーバーライドを使用する代わりに function isPrototypeOf():Boolean が実装されます。
theClass:Object — 指定したオブジェクトが参照する可能性があるクラスです。
|
Boolean —
オブジェクトが theClass パラメータで指定されたオブジェクトのプロトタイプチェーン内にある場合、この値は true になり、それ以外の場合は false になります。
|
| propertyIsEnumerable | () | メソッド |
AS3 function propertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。true の場合、このプロパティが存在し、for..in ループで列挙できます。このメソッドではターゲットオブジェクトのプロトタイプチェーンをチェックしないため、プロパティがターゲットオブジェクト上に存在している必要があります。
作成するプロパティは列挙できますが、ビルトインプロパティは通常列挙できません。
メモ: Object クラスのメソッドは、Object のプロトタイプに動的に作成されます。Object のサブクラスでこのメソッドを再定義する場合は、override キーワードを使用しないでください。たとえば、Object のサブクラスでは、基本クラスのオーバーライドを使用する代わりに function propertyIsEnumerable():Boolean が実装されます。
name:String — オブジェクトのプロパティです。
|
Boolean —
name パラメータで指定されたプロパティが列挙可能な場合、この値は true になり、それ以外の場合は false になります。
|
| setPropertyIsEnumerable | () | メソッド |
public function setPropertyIsEnumerable(name:String, isEnum:Boolean = true):voidループ処理に対するダイナミックプロパティの可用性を設定します。このメソッドではターゲットオブジェクトのプロトタイプチェーンをチェックしないため、プロパティがターゲットオブジェクト上に存在している必要があります。
パラメータname:String — オブジェクトのプロパティです。
|
|
isEnum:Boolean (default = true) — false に設定した場合、ダイナミックプロパティは for..in ループに現れず、propertyIsEnumerable() メソッドは false を返します。
|
関連項目
| toString | () | メソッド |
public function toString():String指定されたオブジェクトのストリング表現を返します。
メモ: Object クラスのメソッドは、Object のプロトタイプに動的に作成されます。Object のサブクラスでこのメソッドを再定義する場合は、override キーワードを使用しないでください。たとえば、Object のサブクラスでは、基本クラスのオーバーライドを使用する代わりに function toString():String が実装されます。
String —
オブジェクトのストリング表現です。
|
| valueOf | () | メソッド |
public function valueOf():Object指定されたオブジェクトのプリミティブ値を返します。このオブジェクトにプリミティブ値がない場合、オブジェクト自体が返されます。
メモ: Object クラスのメソッドは、Object のプロトタイプに動的に作成されます。Object のサブクラスでこのメソッドを再定義する場合は、override キーワードを使用しないでください。たとえば、Object のサブクラスでは、基本クラスのオーバーライドを使用する代わりに function valueOf():Object が実装されます。
Object —
このオブジェクトのプリミティブ値、またはオブジェクト自体です。
|
関連項目
ObjectExample クラスと Circle クラスを使用して、
Object クラスの動的な特徴と、値オブジェクトを Shape オブジェクトに変換して、
ステージ上の指定した x および y 座標に追加する方法を示します。
この例では、値オブジェクト firstInitObj と secondInitObj を作成します。カスタム
クラス Circle は、値オブジェクトを受け入れ、対応する内部プロパティを値オブジェクトに定義されたプロパティに設定しながら
ループします。
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();
}
}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flex/2_jp/langref/Object.html