問題タブ [this-pointer]

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 投票する
2 に答える
462 参照

c++ - メンバー関数で「deletethis」を使用した後、他のメンバー関数にアクセスできるようになりました。なんで?

これを削除する動作を確認するためのサンプルプログラムを作成しました

質問

  1. fun()でdelete thisを実行した後、fun()でこのポインタを使用してfunc_2()にアクセスするにはどうすればよいですか?
  2. 主に、このポインタが削除されたときにobj->fun_2を実行する方法は??
  3. このオブジェクトを強制終了した後に関数メンバーにアクセスできる場合、データメンバーがゼロ「0」になっているのはなぜですか?

Linuxubuntuとg++コンパイラを使用するm

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

javascript - 関数内のjQuery$(this)

$(this)を関数に渡したいのですが、よくわかりません。同様のスレッドが1つありますが、それでも機能させることはできません。誰かが私を助けてくれることを願っています。

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

javascript - これら 2 つのイベント ハンドラでコンテキストが異なるのはなぜですか

これは基本的な質問ですが、コンテキスト (「this」ポインター) が 2 番目のイベント ハンドラーでは正しく、最初のイベント ハンドラーでは正しくない理由がわかりません。

オブジェクト myNotifier を作成するためのこの単純なコンストラクター関数があります。

次に、このmyNotifier.saySomething()メソッドを 2 つのボタンの CLICK のイベント ハンドラーとして使用します。

1 つ目は、「I say: undefined」を示しています。2 つ目は、「I say: HELLO」を示しています。

メソッドを呼び出すときにコンテキスト (this) が元のオブジェクトではないことは理解していますが、2 番目のボタンの関数内で呼び出すときに正しいのはなぜですか?

テストするjsfiddle

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

c++ - 不可能:このポインタをデフォルトの引数として使用します。なんで?

次のコードはコンパイルされません。なんで?

わかりやすくするために編集します。これは私がやろうとしていたことであり、より少ないコード行を使用しています...

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

c++ - this ポインターと同じで、可変個の型に関する問題

なぜこのように動作するのか理解できないコードを挿入しても問題ないことを願っています。

次のコードには 2 つの問題があります。

1) this2 つのインスタンスのポインターが同じ値を示しているのはなぜですか? プログラムの出力は次のとおりです。

2 倍の値を示します0x7ffff1743950。2番目のインスタンスが作成される前に最初のインスタンスが破棄されていないと確信しているので、これは私を驚かせます。

2)が元に設定されているPS場所のディープ コピーを作成しようとします。orig_ptrここで使用されるセットアップは、再帰的なテンプレートのインスタンス化セットアップです。したがってorig_ptr、各レベルで階層を尊重し、それに応じてポイントする必要があります。私が理解していないのは、コードがコンパイルされる理由F{{(void(Is),j,ptr->F[Is])...}}(コードでマークされている) と、コンパイルされない理由F{{(void(Is),j,&ptr->F[Is])...}}です。(これは正しいと思います)。コンパイラーが呼び出しているT(別名) のコンストラクターがわかりません。ポインタ版しかRS<WJ<float> >存在しません。RS<WJ<float> >::RS(Jit&,RS<WJ<float> >)

** 編集 **

WJのインスタンス化手順がF全体を再帰できるように、ポインター インターフェイスを追加しました。SFINEのせいかと思いました。しかし、そうではありませんでした。

g++-4.7 (Ubuntu/Linaro 4.7.2-4precise1) 4.7.2 with でこれを試しました-O0

** 編集 **

@seheの答えは私を正しい方向に向けました。もちろん、void(Is)2 番目のタイプのJVコンストラクターでは必要ありません。最初のタイプでのみ、 をシミュレートするために使用されstd::fillます。しかし、イニシャライザリストにはあります! シーケンス演算子のデフォルトの実装は、完全に排除するのに役立ちます(void)Is

2 番目のケースでは、 の別の使用法Is、つまり inptr->F[Is]があるため、人工的な を導入する必要はありませんvoid。今、これはより良く見えます:

** 編集 **

コンパイルして正常に動作するようになりました!

ただし、1 つの問題がまだ残っています: なぜthis2x が同じなのか?!?

0 投票する
1 に答える
92 参照

php - 配列に格納すると PHP クラスのプロパティが上書きされる

これにはおそらく非常に簡単な説明がありますが、私はこのコードを何ヶ月も動かしていましたが、今日突然動かなくなりました。

テーブルからすべての行を取得します。私が選択しているテーブルのエンティティモデルであるオブジェクトがあります。連想結果配列から行を読み取るときに、「$this->propertyName」を使用して各プロパティを保存し、各オブジェクトを配列にプッシュします。オブジェクトの配列になる前に、同じオブジェクトの配列が繰り返されるようになりました。コード スニペットを次に示します。

私のゲッターとセッターは、各プロパティに対して次のようになります。

提案やアイデアはありますか?

-TU

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

c++ - これにオーバーロードされた演算子を適用する方法は?

C++ のクラスの別のメンバー関数でオーバーロードされた演算子を呼び出す方法は?

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

php - コンストラクターとこのポインター

問題は、「private $json」を宣言した後、コンストラクター $json または $this->json で使用する必要があるかどうかです。

0 投票する
1 に答える
1255 参照

c++ - これ-再帰関数のラムダラッパーでのポインターキャプチャ

ラムダ(以下のコード)を使用してSTLアルゴリズムに渡すWrap<T>再帰メンバー関数を含むクラステンプレートがあります。test(int)std::accumulate

のデフォルトのキャプチャリストを使用し=、再帰的なmeber関数を作成するとstatic、すべて問題なく、必要な結果が得られます。

ただし、これを非静的メンバー関数にするとthis、再帰呼び出しをとして修飾しない限り、VisualC++とgcc4.7.2の両方が単一化されたポインターについて文句を言いthis->test()ます。

LiveWorkSpaceでの出力:

ピースのコメント/*this->/*を外すと、静的メンバー関数の場合と同じ結果になります。

再帰呼び出しをで修飾する必要があるのはなぜthis->ですか?

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

c++ - このインスタンスをコールバックパラメータとして送信します

単純なUIクラスがあり、各要素のコールバックにUI要素インスタンスを送信する必要があるため、(javascriptの場合と同様に)コールバックを呼び出した要素を操作できます。
これには、のインスタンスをthisコールバックとして登録された関数に送信する必要があります。それ、どうやったら出来るの?
現在の状態:

ここで、コールバックを呼び出す関数があります。

だから、私はコールバックでこのようなことをすることができます: