問題タブ [this]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
64826 参照

javascript - 「この」変数を簡単に設定しますか?

「this」変数を設定する良い方法がわからないことを除いて、私はJavascriptについてかなりよく理解しています。検討:

最後の4行なしでこれを行う方法はありますか? それはかなり面倒です...私は美しく賢いと思った匿名関数をバインドしようとしましたが、役に立ちませんでした:

明らかに、変数を myFunction に渡すことはオプションです...しかし、それはこの質問のポイントではありません。

ありがとう。

0 投票する
2 に答える
2906 参照

javascript - Javascript `this`は思ったように機能しませんか?

私はかなり基本的なjs関数をクラスに適応させています。とにかく、基本的にはメインページの上にフローティングコンテナを作成するだけです。不完全であることは承知していますが、入力中です。close()関数を呼び出そうとすると、問題が発生し続けます。this.sdivFirefoxは未定義を返します。close()がPopのメソッドであり、sdivがPopクラスの最初の行で定義されている場合にこれがどのように発生するかについて混乱していますか?

助けてくれてありがとう

0 投票する
4 に答える
2070 参照

c# - VB.NET の一般的なイベント ハンドラー

フォームに約 10 個のボタンがあり、同じ Click イベント ハンドラーを呼び出すようにします。

しかし、そのためにはイベント ハンドラーを一般化する必要があり、VB.NET には、イベントを引き起こしたコントロールを参照するための "this" キーワードがありません。

VB.NET で "this" キーワードの機能を実装するにはどうすればよいですか?

次のことを行うイベント ハンドラーを記述できるようにしたいと考えています。

0 投票する
13 に答える
9853 参照

java - Java での「this」の使用

次のクラスを書くと:

プログラムはコンパイルされますが、プログラムを実行すると、メイン メソッドが 2 つの 0 を出力します。コンストラクターでインスタンス変数を初期化したいと言うには、次のように記述しなければならないことを知っています。

しかし、私がそれを書かない場合、どの変数がコンストラクターで評価 (または考慮) されますか? (式の左側と書き込み側)? 引数ですか、それともインスタンス変数ですか? 違いはありますか?

thisの使用が義務付けられている他のケースはありますか?

0 投票する
7 に答える
27563 参照

java - メソッドで「this」を使用する (Java で)

Javaのメソッドで「this」を使用するのはどうですか? それはオプションですか、それとも義務的に使用する必要がある状況がありますか?

私が遭遇した唯一の状況は、クラス内でメソッド内でメソッドを呼び出すときです。ただし、オプションです。これは、私が何を意味するかを示すためのばかげた例です。

0 投票する
8 に答える
69783 参照

jquery - jQuery イベントで「this」の値を制御する

jQueryを使用して「コントロール」を作成し、jQuery.extendを使用して、可能な限りOOにするのを支援しました。

コントロールの初期化中に、さまざまなクリックイベントを次のように接続します

bind メソッドの data 引数として「this」を渡していることに注意してください。これは、クリック イベントを発生させる要素からではなく、コントロール インスタンスに添付されたデータを取得できるようにするためです。

これは完全に機能しますが、もっと良い方法があると思います

過去に Prototype を使用したことがあるので、イベント内の「this」の値を制御できるバインド構文を覚えています。

jQueryのやり方とは?

0 投票する
3 に答える
396 参照

javascript - メンバー関数の 1 つの中でオブジェクトを参照するにはどうすればよいですか?

私は次のものを持っています:

o.f(fn)o にバインドされているfnwhereを呼び出します。this

thisHERE では、 ob にアクセスするために使用したいと思います。ただし、ob.fが呼び出されると、thisにバインドされoます。JQueryはこのように機能すると思います。例えば:

私が今していることは次のとおりです。

しかし、文体上の理由から、上記は好きではありません。

  1. 演算子を使用すると、newあまりにも古典的な OOP のように聞こえます。
  2. class Obusingの定義functionは直感的ではありません (少なくとも最初は)。

obそのため、オブジェクト リテラルで定義しようとしています。しかし、 以外のオブジェクトobに設定するメソッド呼び出しを使用する関数でオブジェクトを参照する方法が見つかりません。thisob

次のようなことができます:

しかし、上記の因数分解の方法がわかりません。私は試した:

それで、オブジェクト内の関数でオブジェクトを確実に参照する方法はありますか(thisコンテキストに応じて何にでもバインドできます)?

0 投票する
3 に答える
33392 参照

c++ - 「これ」が参照ではなくポインタであるのはなぜですか?

私はこの質問C++ の長所と短所への回答を読んでいて、コメントを読んでいるときにこの疑問を抱きました。

プログラマは、"this" が参照ではなくポインタであることに混乱を覚えることがよくあります。別の混乱は、「hello」が std::string 型ではなく、char const* (ポインター) に評価される理由です (配列からポインターへの変換後)

それは、他の(後の)言語と同じ規則を使用していないことを示しているだけです。— ルドルフィエ

ただし、「これ」のことはかなり些細な問題と言えます。おっと、未定義の動作の例でいくつかのエラーを見つけてくれてありがとう。:)サイズに関する情報が最初のものと関係があるかどうかはわかりませんが。ポインターは、割り当てられたメモリの外側を指すことは単に許可されていません

これは一定のポインターですか?– yesraaj 22 12月. 082008-12-22 06:35

メソッドが const int getFoo() const の場合、これは定数になります。<- getFoo のスコープでは、「this」は定数であるため、読み取り専用です。これにより、バグが防止され、オブジェクトが変更されないという一定レベルの保証が呼び出し元に提供されます。— ダグ T. 22 12 月 2008 〜で 16:42 に

「これ」を再割り当てすることはできません。つまり、これは右辺値であるため、"this = &other;" を実行することはできません。しかし、これは T* 型であり、 T const 型ではありません。つまり、これは非定数ポインターです。const メソッドを使用している場合は、const へのポインターです。T const 。しかし、ポインター自体は非定数です — ヨハネス・シャウブ

"this" は次のように考えてください: #define this (this_ + 0) ここで、コンパイラは "this_" をオブジェクトへのポインターとして作成し、"this" をキーワードにします。(this_ + 0) は右辺値であるため、「this」を割り当てることはできません。もちろん、それはそうではありませんが(そのようなマクロはありません)、それを理解するのに役立ちます

私の質問は、なぜthisポインターが参照ではないのですか? それをポインタにする特定の理由はありますか?


this参照であることが理にかなっている理由について、さらにいくつかの議論があります。

  • Item 1fromを考慮してくださいMore Effective C++ :有効なオブジェクト、つまりNULLではないことが保証されている場合は参照を使用してください(私の解釈)。
  • さらに、参照はポインターよりも安全であると見なされます (漂遊ポインターでメモリーを台無しにすることはできないため)。
  • 第 3 に、参照にアクセスするための構文 ( ) は、ポインターにアクセスするための構文 (または).よりも少し適切で短いです。->(*)