0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptのthisって誰

Posted at

結論

自分という意味

は?

解説

thisは様々な場面で作れる(今回はclassを基に解説する)

test.js
class Test {
  constructor(num1, num2) {
    this.num1 = num1;
    this.num2 = num2;
  };
};
const test = new Test(10, 20);
console.log(test.num1);
test.num2 = 30;
console.log(test.num2);

実行するとこう

test.js.out
10
30

となります。

1行ずつ解説!(例外あり)

class Test {
};
const test = new Test();

Testクラスを宣言
定数testでTestクラスのインスタンスを宣言

インスタンスとは?

クラスを使えるようにすること。クラスは言うなれば雛形なので使える状態にしなければならない。

雛形とは?(概念的話です)

釣りします。釣竿は釣る魚によって変えます。ですが基本的な操作は変わりません。
糸を垂らす→待つ→待つ→待つ→合わせる→糸を引く→釣れた!→喜ぶ
ですね(*^^*)
釣竿は違くても釣る手順は同じです。インスタンスの作成とは釣具屋から釣竿を買って魚を釣れる状態にすることです。
この場合だとclassは釣る出順です。
ですが釣竿によってはリールの場所が違ったりします。ですが、リールと言うのは共通なのでリールを巻くという行為を別の釣竿でも実行することが出来ます。コレがclassの本質です。(遠回りしすぎた)

1行ずつ解説!(例外あり)【再】

class Test {
  construcor(num1, num2) {
  };
};
const test = new Test(10,20);

construcor(num1, num2){};とはインスタンスを生成した時に呼び出されるメソッド(関数、オブジェクトに雛形要素入れたのがclassだからね)です。釣りの説明だとリールですね(?)今num1 num2には10 20が入っていますね。このままでは保存できません。困った! どう困るのかと言うとこのままでは他のメソッドを読み込んでも値を使えません。それはJSにはスコープ{}があり、この中ので宣言した変数などは外部に持ち出せません(引数も)これではclassが使えません!なのでここで登場するのがthisです!(ここまで約1000文字!本題の登場です)冒頭でも説明した通りthisとは自分という意味です。

  this.num1 = num1;
  this.num2 = num2;

ここで言う自分とはTestクラスの自分です。つまり

クラスの中にthisという値を保存する場所がある!(嘘、後で説明する)

ということですね。これはインスタンス生成する事に作られます。thisの保存空間の中のnum1という場所に引数num1(10)が入れられたと言うわけです。

const test = new Test(10,20);
console.log(test.num1);//10

定数testの中でインスタンス生成をしています。つまりクラスはtestの中に入っていることになります(代入してます)
test.num1とは定数testの中のnum1という場所に格納されていた値を取り出すという訳ですね。
classはオブジェクトです(はいそうです)
オブジェクトを雛形にしたのがclassです。

thisとは自分自身を参照する

という意味だ!!!!
this(自分自身).名前(オブジェクトの名前)というわけでした!

は?

class内のthis.名前はその名前の格納庫。# つまりthisとは何者でもないただの一人称だったのだ!
僕の名前は〜、私の名前は〜、の僕、私がthis
田中の名前は〜、佐藤の名前は〜、
const test = new Test();
  ↑
これが代入(重要)
test.〜が田中、佐藤みたいな感じ。

classが沢山あるから固有名詞で呼んでるのがtest.num1のtestの部分で
自分の事だから一人称で呼んでるのがthis.num1のthisという訳

人が沢山あるから固有名詞で呼んでるのが田中の名前の田中の部分で
自分の事だから一人称で呼んでいるのが私の名前のという訳

読んで理解してくれたら嬉しいけど国語力の問題なんだよ(僕の)

それと始業式間近で宿題終わらず夜更かししながら友達と宿題してる人が片手間で書いた文なので理解が出来なかったらすみません先に謝っておきますすみません

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?