以下のソースコードはもちろんthisの内容が変わっているのでエラーが発生しますが、
thisの一個手前の階層のthisを取得する便利な関数はあるのでしょうか?
質問通りに回答するとなれば可能です。
Function.prototype.bindを使えば関数に対してthisを束縛することが可能です。
しかしthis
の束縛はオススメしません。
JavaScript Ninjaの極意という書籍で、
this
は文脈により4通りの挙動を示すと解説されています。
その条件は複雑怪奇でとてもじゃないけど使いこなせる気はしません。
なのでES2015以降の流れでアロー関数が実装され、
thisの管理を気にする場面はほぼ全て消え去りました。
js
1class HogeHoge {
2 constructor() {
3 this.a = 10;
4 this.b();
5 }
6 b() {
7 const a = () => {
8 console.log(this.a);
9 }
10 a();
11 }
12}
13var dummy = new HogeHoge();
こうしておけばclass
構文内のメソッド内に於いて、
いくら関数をネストしても常にthis
はnewで作ったインスタンスに向くようになります。
イマドキのJavaScriptの書き方2018は私が強く共感している記事です。
その「関数」や「thisを操作するコードは書かない」等のセクションで
アロー関数を利用してthis
を避ける事を説いています。
functionキーワードはもう捨てましょう!functionキーワードのthisの取り扱いはトラブルの元です。もう存在しなかったものとして歴史の闇に葬ります。次の書き方は古いfunctionキーワードを使っています。こういう説明を見かけたらゴミ箱にダンクシュートします。
js
1// 古い関数定義
2function name(引数) {
3 本体
4}
今時はアロー関数を使って書いていきます。特に、今時の書き方は、JavaScriptでよく扱う、無名関数との相性が非常に高くなっています。
js
1// 今時の関数定義
2const name = (引数) => {
3 本体
4};
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/07 07:01
退会済みユーザー
2020/03/07 23:29