- ベストアンサー
JavaScriptで親オブジェクトと子オブジェクトを分離させる方法
- JavaScriptで親オブジェクトと子オブジェクトを分離させる方法を知りたいです。
- 現在、JavaScriptのコードで親オブジェクトと子オブジェクトを扱っていますが、子オブジェクト内で親オブジェクトのプロパティを参照する方法が分からず困っています。
- 具体的には、親オブジェクト内で定義されたプロパティを子オブジェクト内の関数で使用したいのですが、どのようにすればいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>func()関数内でthisを使うとa[0].propを参照できます。 ここで、this は、a[0].prop というより、 document.getElementById('aaa') なのでa[0]とは関係ありません。 まどろっこしいですが 例えば、こんな感じにはできます。 a = new Array(); a[0]= new OBJ(); function OBJ(){ this.prop=document.getElementById("aaa"); this.prop2=document.getElementById("bbb"); } OBJ.prototype.func = function(){ alert(this.prop.id); alert(this.prop2.id); }; a[0].prop.addEventListener("click",func,false); function func(){ a[0].func(); }
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1>私がやりたいのはイベントリスナーで呼び出した関数(とういかオブジェクトですね)内で、配列の引数を指定せず対象の配列を使うことです 意図するところを理解してないワケではなくて #1で説明している通り、 >a[0].prop.addEventListener(click,func,false); は、a[0]のオブジェクトに関してイベントを設定しているわけではありませんので、クリックイベントによって呼び出される関数(オブジェクトではない)でのthisは、id='aaa' のオブジェクト(エレメント)であってa[0]ではありません。(a[0]とは関係ない) だから、このような(質問者の)方法ではムリです。
お礼
回答ありがとうございます。納得です。a[0]は関係ないのですね。コードを変えて別の方法でやってみます。
お礼
ご回答ありがとうございます。 確かにこの方法でa[0]をthisとして使えます。 少し説明が足りなかった点があったのですが、私がやりたいのはイベントリスナーで呼び出した関数(とういかオブジェクトですね)内で、配列の引数を指定せず対象の配列を使うことです。 addEventListenerの第二引数で配列要素番号を引数として渡せればいいんですけれど。。。