トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     クラス内の変数について
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
takiguchi
Åê¹ÆNo.3693
投稿日時: 2004-2-11 11:51
半人前
居住地: 東京
投稿: 38
使用環境:
Re: クラス内の変数について
こんにちは、度々すいません
以前、youichさんに教えて頂いたProtoExampleについて質問があります。
引用:
protoypeや__proto__についての関係なんですが、
ASには__resolveという、そのオブジェクトに存在しないプロパティを
呼び出そうとしたときに呼び出されるメソッドがあります。…
これ(ProtoExample.as)を使って考えると、もし?かしたらprototypeや__proto__の関係が
すんなり解るかもしれません、ややこしそうなら飛ばして下さい。

「ProtoExample.prototypeをPROTOTYPEに、
obj1.__proto__をobj1._protoに置き換えて考えてみましょう!」
「ProtoExampleのようなことが、何者かによって私たちの見えないところで行なわれているのです!」
という、とらえ方で大丈夫でしょうか?

あと…ProtoExampleに関して分からない事が1点あります。
下記のように__resolveが3回も呼ばれることです(うち2回がobj1)
教えてください…よろしくお願いいたします

//ProtoExample.as
dynamic class ProtoExample{
	
	//__proto__をシュミレートするObject _proto
	var _proto:Object;
	static var num:Number=0; //追加
	var idName:String; //追加
	
	function ProtoExample(proto:Object){
		_proto = proto;
		num++; //追加
		idName="obj" + num; //追加
	}
	
	//もしProtoExampleのインスタンスに無いプロパティが呼び出されたら呼ばれる
	function __resolve(prop:String){
		
		trace([idName+".__resolve called","Prop:"+prop]); //追加
		
		//引数に入ってきたものと同名のプロパティを_protoから探す
		var f = _proto[prop];
	
		//それがFunctionなら関数として返す。
		if( typeof f== "Function")
			return f.apply(this,arguments);
		
		return f;
	}
}

//example:
PROTOTYPE = new Object();
PROTOTYPE.prop = "prototypeProperty";
PROTOTYPE.datas = [1,2,3,4,5];
	
var obj1:ProtoExample = new ProtoExample(PROTOTYPE);
var obj2:ProtoExample = new ProtoExample(PROTOTYPE);
trace([obj1.idName,obj2.idName]); //obj1,obj2
	
//obj1.prop,obj2.propがないため__resolve2回呼ばれる
//obj2.__resolve called,Prop:prop
//obj1.__resolve called,Prop:prop
trace([obj1.prop,obj2.prop]); //prototypeProperty,prototypeProperty
	
//ex:obj1.prop = "instanceProperty";
obj1.prop = "instanceProperty"; //dynamicによりobj1.propプロパティ新規追加
	
//obj2.propがないため__resolve1回呼ばれる
//obj2.__resolve called,Prop:prop
trace([obj1.prop,obj2.prop]);//instanceProperty,prototypeProperty
	
//ex: obj1.__proto__.prop = "OOps...";
obj1._proto.prop = "OOps..."; //クラス内で定義されてるobj1._proto.propプロパティ書き換え
	
//obj2.propがないため__resolve1回呼ばれる
//obj2.__resolve called,Prop:prop
trace([obj1.prop,obj2.prop]); //instanceProperty,OOps...
	
//obj1.datas,obj2.datasがないため__resolve2回呼ばれる
//obj2.__resolve called,Prop:datas
//obj1.__resolve called,Prop:datas
trace([obj1.datas,obj2.datas]); //1,2,3,4,5 , 1,2,3,4,5
	
obj1.datas[0] = "X"; //dynamicによりobj1.datasプロパティ新規追加
//参照型のためPROTOTYPE.datasに設定した配列を変更することに…
////////////////////ここでなぜか__resolve3回呼ばれます////////////////////
//obj1.__resolve called,Prop:datas
//obj2.__resolve called,Prop:datas
//obj1.__resolve called,Prop:datas
trace([PROTOTYPE.datas,obj1.datas,obj2.datas]); //X,2,3,4,5 , X,2,3,4,5 , X,2,3,4,5
trace([obj1._proto.datas,obj2._proto.datas]); //X,2,3,4,5 , X,2,3,4,5
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   クラス内の変数について takiguchi 2004-2-5 7:02
     Re: クラス内の変数について Fumio 2004-2-5 10:42
     Re: クラス内の変数について Fumio 2004-2-5 11:05
       Re: クラス内の変数について takiguchi 2004-2-5 20:09
         Re: クラス内の変数について Fumio 2004-2-6 9:59
           Re: クラス内の変数について takiguchi 2004-2-6 11:00
         Re: クラス内の変数について Fumio 2004-2-6 12:45
           Re: クラス内の変数について takiguchi 2004-2-6 14:53
             Re: クラス内の変数について youich 2004-2-8 13:43
             Re: クラス内の変数について youich 2004-2-8 15:54
               Re: クラス内の変数について takiguchi 2004-2-8 21:45
                 Re: クラス内の変数について youich 2004-2-9 3:15
                 » Re: クラス内の変数について takiguchi 2004-2-11 11:51
                     Re: クラス内の変数について Fumio 2004-2-11 13:39
                       Re: クラス内の変数について takiguchi 2004-2-11 14:53
                     Re: クラス内の変数について youich 2004-2-11 22:27
                       Re: クラス内の変数について takiguchi 2004-2-12 2:14
                         Re: クラス内の変数について youich 2004-2-12 3:00
                         Re: クラス内の変数について Fumio 2004-2-12 22:33
                           Re: クラス内の変数について takiguchi 2004-2-13 11:41
             Re: クラス内の変数について Fumio 2004-2-8 22:09
     Re: クラス内の変数について Fumio 2004-2-5 11:16
       Re: クラス内の変数について tomohiro 2004-2-5 12:05
         Re: クラス内の変数について Fumio 2004-2-5 18:54
     Re: クラス内の変数について youich 2004-2-8 14:06
     Re: クラス内の変数について takiguchi 2004-2-9 21:32
       Re: クラス内の変数について youich 2004-2-9 22:47
         Re: クラス内の変数について takiguchi 2004-2-10 0:17
           Re: クラス内の変数について youich 2004-2-10 2:34

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops