• ベストアンサー

JavaScriptのthisについて

はじめまして。 質問があります。 例えば、JavaScriptのthisとは、参照中のオブジェクトであると参考書 に書かれているのですが、JavaScriptでいうオブジェクトとは、何を指 すものなのでしょうか、参照書のサンプルをみてみると、thisを指定し ている場所はHTMLフォームなどの中であったりします。ということは、 HTMLフォームはオブジェクトの一つであるとみなすべきなのでしょうか?いまいちthisの使い方がよくわかりません。どうかご教授 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#23734
noname#23734
回答No.1

例えば、alert(document.forms[0])とすると[object]を返しますからHTMLフォームもオブジェクトで良いと思います。 HTMLの<object>もJavaScriptでは[object]のようです。 関数や配列、ウインドウ、URLなどほとんどのものがオブジェクトなんだと思いますよ。 <form onclick="alert(this.action)" action="index.cgi"><!--これはdocument.forms[0]--> <input type="text" value="test"><!--これはdocument.forms[0].elements[0]--> <input type="text" value="test2" onclick="a(this)"><!--これはdocument.forms[0].elements[1]--> </form> function a(obj){ alert(obj.value) } window.onload=function(){ document.forms[0].elements[0].onclick=function(){ alert(this.value) } } ネットで検索するとこんな使い方が一般的なんですかね。

__tanpopo__
質問者

お礼

al785z29様へ ご回答ありがとうございました。 連絡が遅れましてすみませんでした。 いろいろなthisの使用例を提供してくださいまして ありがとうございました。 わかりやすかったです。

関連するQ&A

  • JavaScriptについて

    JavaScriptをオブジェクト指向言語(クラスや継承など)のように記述し、使用することは可能なのでしょうか? JavaScriptをオブジェクト指向的に記述しているソースを見て 感動したので質問してみました。 しょぼい質問で申し訳ないのですが、どなたかご教授ください。 お願い致します。 また、関連するサイトやサンプルソース等がわかりやすく紹介されて いるサイトなどがあれば教えて下さい。

  • JavaScriptについて

    JavaScriptを使っています。 http://www.scollabo.com/banban/jsindex/sample/sample_004.html このサイトを参考にしていて、上記のページでalert メソッドを調べていたら、 windowオブジェクトのメソッドという使い方は理解でき ましたが、 Formオブジェクトのメソッドとしての使い方が不明です。 Formオブジェクトではどのように使うのでしょうか? 教えてください。

  • thisキーワードについて確認

    下記の確認事項が正しいかどうか、yesかNoかで判定してくださいましたら幸いです。 確認1:thisは、現在実行中のオブジェクト自身をあらわす参照型変数。 確認2:『インスタンスメソッドやコンストラクタから他のメソッドやメンバ変数を参照する場合、 オブジェクト変数を指定せず参照することができるが、それは、インスタンスメソッド、コンストラクタは現在のオブジェクトを表すthisを持っているため。単純名で参照されているインスタンスメンバは、 実はコンパイラによりthis.単純名に変換されている。 クラスメソッドは個々のオブジェクトに属さないため、メソッド内にthis を持っていないので、thisは使えない。』

    • ベストアンサー
    • Java
  • JavaScriptのことで

    JavaScriptのことでちょっとききたいのですが、 同じHTML内で、リンクをクリックすると 指定の場所に移動する。 というのをおしえてください。 例のタグを書いていただければうれしいです。

  • 以下のサンプルでのthisが指すものについて・・・

    package ya.Sample; import android.app.*; import android.os.*; import android.widget.*; public class Sample2 extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); setContentView(ll); TextView tv = new TextView(this); tv.setText("ようこそアンドロイドへ!"); ll.addView(tv); } } このサンプルにおいてLinearLayout ll = new LinearLayout(this)のthisの指すものについて質問があります。私がこのthisはSample2を指すんですよねと質問したところ 引数thisは Sample2 を指しますよね 大雑把な理解だなぁ。 Sample2は「型」なのだから、例えば「整数」や「文字列」のような概念だ。 thisは特定のインスタンスを指すのだから、1024とか"abc"とか、そのクラスに属するもののうち、特定の具象を指すものだ。 27や47が整数である、というのと同じ意味で、thisはSample2ではあるのだが、こういう場合は普通「thisはSample2のインスタンスである」と表現する とある方に回答をいただいたのですが 「thisはSample2のインスタンスである」と表現する の部分のインスタンスが理解できません・・・ インスタンスとはClassから製造されたObjectであるはずですからこの場合 Sample2クラスを雛型として作られたObjectをThisは指すとかってに再解釈してしまい、 この引数Thisはオブジェクトのことでありnew LinearLayout(this)において、LinearLayoutは引数にオブジェクトを持っているということでしょうか?そして継承関係よりこのオブジェクトはContextクラス(?)も含んでいるため、LinearLayoutクラスのLinearLayout(Context context)は呼び出しに成功するということなのでしょうか? 今までJavaの引数で見てきたのが実数や文字だったので、引数がオブジェクト(?)なのにちょっと違和感がありまして・・・ 回答していただけたらうれしいですよろしくお願いいたします!!!

    • ベストアンサー
    • Java
  • thisキーワードについて確認

    確認1:thisは、「オブジェクト(インスタンス)自身の参照」ですか? 質問:何故クラスメソッド内でthisが使えないのですか?

    • ベストアンサー
    • Java
  • Javascriptのオブジェクト指向プログラミングとイベント、thisの扱い

    Javascriptを勉強中です。 オブジェクト指向プログラミングを習得しようと努力しております。 あるHTML要素(例ではelm)にクリックイベントを付加する際、オブジェクト内のmyFuncを呼ぶのに以下のようにthis.myFuncとすると、thisがHTML要素となるためにエラーが出ます。 elm.addEventListener("click", this.myFunc, false); これを回避する目的で elm.addEventListener("click", (function(that) { return function() { that.myFunc(); } } )(this), false); とオブジェクト内からクロージャを使って定義することで解決することは分かったのですが、このイベントを削除するのに、 elm.removeEventListener("click", (function(that) { return function() { that.myFunc(); } } )(this), false); や elm.removeEventListener("click", function() { that.myFunc(); }, false); としても除去することが出来ません。この場合はどのようにイベントを削除することが出来るのでしょうか? そもそもクロージャを使った定義部分に問題があるのでしょうか? どうぞ教えていただきますようお願いいたします。

  • javascript 親オブジェクトと子オブジェクトを分離させたい

    例えばjavascriptで下のようなコードを書いたとします。 a=new Array() a[0]=new OBJ(); function OBJ(){ this.prop=document.getElementById('aaa') this.prop2=document.getElementById('bbb') } a[0].prop.addEventListener(click,func,false); function func(){ ??? } func()関数内でthisを使うとa[0].propを参照できます。 一方、a[0].prop2を参照するにはどうすればいいのでしょうか? 配列の要素番号を指定しないで参照させる方法が分からず悩んでいます。 下のようにもしできるのであればいいのですが。。。 a[0]とpropのオブジェクトを分割->a[0]オブジェクトを抜き出し-> a[0]オブジェクトにprop2を追加 または別の方法があるのでしょうか。 ぜひぜひご回答のほどお願いいたします。

  • javascriptに関して

    オンマウスで画像が大きくなり、そのうえリンクが張れるサンプルのソースを教えてください。 フラッシュなどは使用できずjavascriptで制作しなければなりません。 参考サイトなどもございましたらあわせてご教授下さい。

  • イントラネット内でJavascriptが有効にできない

    HTML&javascript初心者です。 javascriptを記述したhtmlファイルをIE7で表示したところ、 何度やってもうまくいかず、<noscript>タグを使い確認したところ javascriptに対応していないことが判明しました。 類似の質問に対する回答を参考に ツール→インターネットオプション→「セキュリティ」タブ →レベルのカスタマイズから、「Javaアプレットのスクリプト」 のところを確認しましたが、しっかりと「有効」になっており、 またフォルダとして参照して開いていることが原因かなとも思い、 Apacheをつかってhttp://localhost/○○.htmlの形でチャレンジしてみましたがダメでした。 どなたか詳しい方、対処法に関してご教授お願いします。

専門家に質問してみよう