タグ付けされた質問 「this」

多くのオブジェクト指向プログラミング言語で現在のクラスインスタンスまたはオブジェクトを参照するキーワード。

11
コールバック内で正しい「this」にアクセスする方法は?
イベントハンドラーを登録するコンストラクター関数があります。 function MyConstructor(data, transport) { this.data = data; transport.on('data', function () { alert(this.data); }); } // Mock transport object var transport = { on: function(event, callback) { setTimeout(callback, 1000); } }; // called as var obj = new MyConstructor('foo', transport); コードスニペットを実行する結果を非表示スニペットを展開 ただし、dataコールバック内で作成されたオブジェクトのプロパティにアクセスできません。this作成されたオブジェクトではなく、別のオブジェクトを参照しているように見えます。 また、無名関数の代わりにオブジェクトメソッドを使用しようとしました。 function MyConstructor(data, transport) { this.data = data; …
1425 javascript  callback  this 

22
「this」キーワードはどのように機能しますか?
OverаэтотвопросестьответынаStack Overflowнарусском:Потеряконтекставызова thisStack OverflowサイトのJavaScriptでキーワードがどのように正しく(そして正しく)使用されているかについての明確な説明がないようです。 私はそれに非常に奇妙な振る舞いを見ましたが、なぜそれが起こったのか理解できませんでした。 どのように機能しthis、いつ使用する必要がありますか?
1309 javascript  this 

7
AngularJSコントローラーの 'this'と$ scope
AngularJSのホームページの「Create Components」セクションに、次の例があります。 controller: function($scope, $element) { var panes = $scope.panes = []; $scope.select = function(pane) { angular.forEach(panes, function(pane) { pane.selected = false; }); pane.selected = true; } this.addPane = function(pane) { if (panes.length == 0) $scope.select(pane); panes.push(pane); } } selectメソッドがに追加されている$scopeが、addPaneメソッドがに追加されていることに注意してくださいthis。に変更すると$scope.addPane、コードが壊れます。 ドキュメントには実際には違いがあると書かれていますが、違いが何であるかについては触れられていません: Angularの以前のバージョン(1.0 RC以前)thisでは、$scopeメソッドと互換的に使用できましたが、これは当てはまりません。スコープに定義されたメソッドの内部thisと$scope(角セットは互換性がありますthisに$scopeではなく、それ以外の場合は、あなたのコントローラのコンストラクタの内部で、)。 どのようにthisして$scopeAngularJSのコントローラで動作しますか?


7
「$(this)」と「this」の違いは何ですか?
私は現在、このチュートリアルを進めています:jQuery入門 以下の2つの例の場合: $("#orderedlist").find("li").each(function (i) { $(this).append(" BAM! " + i); }); $("#reset").click(function () { $("form").each(function () { this.reset(); }); }); 最初の例では$(this)、各li要素内にテキストを追加するために使用しています。2番目の例ではthis、フォームをリセットするときに直接使用します。 $(this)よりも頻繁に使用されているようですthis。 私の推測は最初の例で$()は、各li要素をappend()関数を理解するjQueryオブジェクトに変換するのに対し、2番目の例reset()ではフォームで直接呼び出すことができます。 基本的に$()、特別なjQuery専用の関数が必要です。 これは正しいです?
567 javascript  jquery  this 




18
クラスで「これ」を使用する必要があるのはいつですか?
私はそれthisが現在のオブジェクトを参照していることを知っています。しかし、本当にそれをいつ使用する必要があるのか​​わかりません。たとえば、一部のメソッドのx代わりにを使用した場合、何か違いthis.xはありますか?x考えられるメソッドに対してローカルな変数を参照する可能性がありますか?この方法でのみ見られる変数を意味します。 どうthis.method()ですか?使えますか?それを使用する必要があります。だけを使用method()した場合、デフォルトでは現在のオブジェクトに適用されませんか?
267 java  oop  this 

7
アクティビティコンテキストまたはアプリケーションコンテキストを呼び出すタイミング
これらの2つのコンテキストが何であるかについては多くの投稿がありました。 これまでのところ理解できますが、それぞれがクラスのインスタンスです。つまり、一部のプログラマーはthis.getApplicationContext()、メモリを「漏らさない」ために、できるだけ頻繁に使用することを推奨しています。これは、他のthis(Activityインスタンスコンテキストを取得する)がActivity、ユーザーが電話を傾けるかアプリを離れるたびに破棄されるを指しているためです。明らかに、ガベージコレクター(GC)がキャッチせず、メモリを使いすぎているようです。 .. しかし、誰かがそれを使用するのが適切thisであり(現在のActivityインスタンスのコンテキストを取得する)、アプリケーションのコンテキストが役に立たない/間違っているいくつかの本当に良いコーディング例を思い付くことができますか?

30
「this」キーワードはいつ使用しますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 他の人がthisキーワードをどのように使用するのか知りたくて。コンストラクターで使用する傾向がありますが、クラス全体で他のメソッドで使用することもできます。いくつかの例: コンストラクタで: public Light(Vector v) { this.dir = new Vector(v); } 他の場所 public void SomeMethod() { Vector vec = new Vector(); double d = (vec * vec) - (this.radius * this.radius); }
249 c#  coding-style  this 


5
thisコンテキストを関数に渡すにはどうすればよいですか?
これは簡単にグーグルできるものだと思いましたが、おそらく私は正しい質問をしていません... 特定のJavaScript関数で「this」が参照するものを設定するにはどうすればよいですか? たとえば、次のようなjQueryのほとんどの関数と同様です。 $(selector).each(function() { //$(this) gives me access to whatever selector we're on }); 呼び出されたときに適切な「this」参照を持つ独自のスタンドアロン関数を作成/呼び出すにはどうすればよいですか?私はjQueryを使用しているので、jQuery固有の方法がある場合はそれが理想的です。
213 javascript  jquery  scope  this 

4
$(this)をjQueryセレクターから除外するにはどうすればよいですか?
私はこのようなものを持っています: <div class="content"> <a href="#">A</a> </div> <div class="content"> <a href="#">B</a> </div> <div class="content"> <a href="#">C</a> </div> これらのリンクの1つがクリックされたときに、クリックされていないリンクに対して.hide()関数を実行したい。私はjQueryに:notセレクターがあることを理解していますが、この場合、リンクを選択する必要があるため、この方法を使用する方法を理解できません$(".content a") 私は何かしたいです $(".content a").click(function() { $(".content a:not(this)").hide("slow"); }); この場合、:notセレクターを適切に使用する方法がわかりません。

2
なぜ「これ」はポインタであり、参照ではないのですか?
私はこの質問C ++の賛否両論の回答を読んでいて、コメントを読んでいるときにこの疑問を感じました。 プログラマは、「これ」がポインタであり、参照ではないことを混乱させることがよくあります。"hello"がstd :: string型ではないが、char const *(ポインター)に評価される理由は別の混乱です(配列からポインターへの変換後)– Johannes Schaub-litb Dec 22 '08 at 22:56 これは、他の(後の)言語と同じ規則を使用していないことを示しています。– le dorfier 2008年12月22日3:35 私は「これ」のものをかなり些細な問題と呼びます。そして、おっと、私の未定義の動作の例でいくつかのエラーをキャッチしてくれてありがとう。:)私はサイズに関する情報が最初のもので何と関係があるのか​​理解していませんが。ポインターは、割り当てられたメモリの外を指すことは許可されていません。 これは絶え間ないpoinerですか?– yesraaj 2008年12月22日6:35 メソッドがconst int getFoo()constの場合、これは定数にすることができます。<-getFooのスコープでは、「this」は定数なので、読み取り専用です。これにより、バグが防止され、オブジェクトが変更されないことがある程度保証されます。– Doug T. Dec 22 '08 at 16:42 「これ」を再割り当てすることはできません。つまり、これは右辺値であるため、「this =&other;」を実行できません。これはタイプT *であり、タイプT constではありません。つまり、それは非定数ポインターです。constメソッドを使用している場合は、constへのポインタです。T const。しかし、ポインタ自体は非定数です– Johannes Schaub-litb '08 / 12/22 17:53 「this」は次のように考えてください。#define this(this_ + 0)は、コンパイラが「this_」をオブジェクトへのポインタとして作成し、「this」をキーワードにします。(this_ + 0)は右辺値なので、「this」を割り当てることはできません。もちろん、それはそうではありません(そのようなマクロはありません)が、それを理解するのに役立ちます– Johannes …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.