Written by Kasumi

JavaScriptで参照先オブジェクトからthisが渡らない時の対処方法

JavaScriptで参照先オブジェクトメソッドを変数に格納。

上記変数から関数を実行したが、thisがunderdefinedとなり参照できない。

thisを渡して関数を実行できるようにしたい。

本記事ではこのような悩みを解決。

実装例を元に解説します。

thisが渡らない原因

const message = {
  content: 'hello',
  Intro(name) {
    console.log(this.content + ' ' + name);
  }
}
const introduction = message.Intro;
introduction('kasumi');
introduction('taro');

//コンソール結果
undefined kasumi
undefined taro

thisが渡らないコード例です。

コンソールにhello name(引数)と出力するmessageオブジェクトのIntroメソッドがあります。

上記を使い回す為、変数に格納。

関数を実行したところ、Introメソッドのthis.contentプロパティが参照できず、undefinedになってしまいます。

thisが渡らない原因としてはintroduction変数のthis参照先がmessageオブジェクトではなく、グローバルオブジェクトになってるのが原因です。

bindメソッドを使ってthisを渡す

const message = {
    content: 'hello ',
    Intro(name) {
      console.log(this.content + name);
    }
}
const introduction = message.Intro.bind(message);
introduction('kasumi');
introduction('taro');

//コンソール結果
hello kasumi
hello taro

参照オブジェクトからthisを渡すコード例です。

bindメソッドを使います。

使い方は以下の通りです。

実行したいオブジェクト.bind(thisの参照先オブジェクト);

実行したいオブジェクトとbindメソッドを連結。

bindメソッドの引数にthisを参照したいオブジェクトを指定します。

以上で参照したいオブジェクトからthisを渡す事が出来るようになります。

まとめ

JavaScriptで参照先オブジェクトからthisが渡らない時の対処方法について紹介しました。

以上で解説を終わります。

目次

関連記事

JavaScript

JavaScriptを使いselectタグでページ内リンクを実装する方法

2022.10.22
1066
JavaScript

【JavaScript】URLからパラメータを削除する方法

2023.04.13
899
JavaScript

【CSS・JS】本文を透過グラデーションで隠して、もっと見るボタンで開閉するアコーディオンを実装する方法

2023.01.28
1564
JavaScript

JavaScriptの配列で条件一致する要素だけ抽出する方法【filterメソッドを使おう】

2023.01.04
1446