1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プログラミングにおけるthisとは何者か

Posted at

プログラミングでよく登場するthisというキーワード。初めて見たときは「これって何者?」と思うかもしれません。でも、thisはとても役に立つもので、オブジェクト指向プログラミングで重要な役割を果たします。
thisの基本的な意味

thisは、現在のオブジェクト自身を指すキーワードです。言い換えれば、thisは「このオブジェクト」という意味を持っていて、その場面で使われているオブジェクトを表します。

例えば、クラスを使ってオブジェクトを作るとき、クラスの中でthisを使うことで、そのクラスが持つデータやメソッドにアクセスすることができます。

JavaScriptにおけるthis

JavaScriptでは、thisの動きは少し複雑です。thisが指すものは、その関数の呼び出し方によって変わります。

メソッドとして呼び出された場合:thisはそのメソッドが属するオブジェクトを指します。

const user = {
  name: '太郎',
  sayHello: function() {
    console.log(`こんにちは、私は${this.name}です。`);
  }
};
user.sayHello(); // こんにちは、私は太郎です。

この場合、thisはuserオブジェクトを指します。

関数として呼び出された場合:thisはグローバルオブジェクト(ブラウザならwindow)を指します。

function showThis() {
  console.log(this);
}
showThis(); // グローバルオブジェクト(ブラウザでは`window`)

アロー関数の場合:アロー関数では、thisはその関数が定義されたスコープのthisを引き継ぎます。

const user = {
  name: '太郎',
  sayHello: () => {
    console.log(`こんにちは、私は${this.name}です。`);
  }
};
user.sayHello(); // こんにちは、私はundefinedです。

アロー関数ではthisがuserを指さないので、nameはundefinedになってしまいます。

Javaにおけるthis

Javaなどのオブジェクト指向プログラミング言語では、thisはもっとシンプルです。クラスのメンバ変数やメソッドにアクセスするために使われ、現在のインスタンスを指します。

public class Person {
    String name;

    public Person(String name) {
        this.name = name; // `this`は現在のインスタンスを指す
    }

    public void greet() {
        System.out.println("こんにちは、私は" + this.name + "です。");
    }
}

この場合、this.nameはそのクラスのインスタンスのnameを指し、コンストラクタで渡された引数と区別するために使われています。

まとめ

thisは「今、自分が操作しているオブジェクト」を表すキーワードです。プログラミング言語によって意味や使い方が少し異なるので、最初は混乱するかもしれませんが、慣れてくるとクラスやオブジェクトを扱う際に非常に便利です。

覚えておくべきポイントは、thisがどのオブジェクトを指しているかはコードがどのように呼び出されているかによって決まることです。実際にコードを書いて試してみることで、thisの使い方にもっと慣れていけると思います!

最後までよんでいただきありがとうございます。
@y-t0910をフォロー,いいねしていただけると嬉しいです!

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?