[解決済み] クラスメソッド内の "this "をタイプスクリプトで記述する
2022-03-13 23:07:14
質問
基本的なことだと思うのですが、なかなか理解しにくいです。
class Main
{
constructor()
{
requestAnimationFrame(this.update); //fine
}
update(): void
{
requestAnimationFrame(this.update); //error, because this is window
}
}
プロキシが必要なようなので、Jqueryを使うとします。
class Main
{
constructor()
{
this.updateProxy = $.proxy(this.update, this);
requestAnimationFrame(this.updateProxy); //fine
}
updateProxy: () => void
update(): void
{
requestAnimationFrame(this.updateProxy); //fine
}
}
しかし、ActionScript 3 のバックグラウンドを持っている私には、ここで何が起こっているのかよくわかりません。Javascriptがどこで始まり、TypeScriptがどこで終わるのか、よくわからないのです。
updateProxy: () => void
そしてまた、私はこの方法が正しいかどうか確信が持てないのです。私が一番避けたいのは、クラスのほとんどに a() 関数があり、その関数に
aProxy()
同じことを2回書いているような気がするのですが?これは正常なことなのでしょうか?
解決方法は?
もし、あなたが
this
TypeScriptではarrow関数を用いてこれを実現する。Andersの言葉を引用します。
その
this
はレキシックスコープされます。
私が好きな使い方を紹介します。
class test{
// Use arrow functions
func1=(arg:string)=>{
return arg+" yeah" + this.prop;
}
func2=(arg:number)=>{
return arg+10 + this.prop;
}
// some property on this
prop = 10;
}
生成されたJavaScriptで
this
はキャプチャ
外側
関数呼び出しの
var _this = this;
this.prop = 10;
this.func1 = function (arg) {
return arg + " yeah" + _this.prop;
};
ということで
this
関数呼び出しの中の値 (これは
window
は使用されません。
もっと詳しく知りたい方は
「理解する
this
TypeScriptで」(4:05) - YouTube
関連
-
[解決済み] セレクタの子を取得する方法は?
-
[解決済み] コールバック内で正しい `this` にアクセスする方法
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] jQuery 複数のイベントで同じ関数を起動する
-
[解決済み] AngularJS コントローラにおける 'this' と $scope の比較
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] jQuery hasAttrで要素に属性があるかどうかをチェックする【重複あり
-
[解決済み] Google Maps APIでマウスのスクロールホイールによる拡大縮小を無効にする方法
-
[解決済み】TypeScriptのインターフェースと型について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jquery mobileでページ中央のグリッド表示
-
[解決済み] 選択オプション「selected」を値で設定する
-
[解決済み] Twitter Bootstrapのモーダルクローズに関数をバインドする
-
[解決済み] Twitter Bootstrapのモーダルウィンドウを閉じないようにする
-
[解決済み] クリックボタンでクリップボードにコピー
-
[解決済み] jQueryを使用してspanに値を設定する方法
-
[解決済み] jQueryの.ajax()メソッドが私のセッションクッキーを送信しないのはなぜですか?
-
[解決済み】jQueryで入力不可属性をトグルする。
-
[解決済み] jQuery / JavaScriptでJSONデータをパースする方法は?
-
[解決済み] jQueryでinput[type=text]の値変化を検出する