JavaScript5.5(練習)

5.3から続く

①クラスとオブジェクトの使い方について

HTMLの部分

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
</head>
<body>
   <script src="main.js"></script>
</body>
</html>

Javascriptの部分

const obj = {
// プロパティとキーがあるものがオブジェクト
    first_name: 'Suzutuki',
    last_name: 'Akina',
    printFullname: function() {
       console.log('hello');
   }
}

// classという演算子を用いてオブジェクトを初期化する処理を記載する
class Myobj {
     constructor() {
       this.first_name = 'Suzutuki';
       this.last_name = 'Akina';
}

     printFullname() {
       console.log('hello');
  }
}
// new演算子を使うことによってインスタンスが生成される
const obj2 = new Myobj();

obj.printFullname()
obj2.printFullname()
console.log(obj.first_name);

検証して実行結果を確かめると・・・

クラスとオブジェクトの使い方のおさらいができた。

②thisとbindについて

HTMLの記述

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
</head>
<body>
     <script src="main.js"></script>
</body>
</html>

Javascriptの記述

const obj = {
  first_name: "Jirou",
  last_name: "Yamada",
  printFullName: function () {
  // このThisはobjを参照するのでfirst_name: 'Jirou',last_name: 'Yamada',が出力されるよ
    console.log(this);
  // thisを固定する方法1: 変数としてこの時点のthisを入れる
    const _that = this;
    window.setTimeout(function () {
// このthisはwindowを参照する
     console.log(this);
// こちらのやり方だとobjが出力されるよ
     console.log(_that);
  });
 },
};
console.log(obj.first_name);
obj.printFullName();
const obj2 = {
  first_name: "Akina",
  last_name: "Suzutuki",
  printFullName: function () {
    setTimeout(
      function () {
   // このthisはwiondowを参照する(bindがない場合)
        console.log(this);
   // thisを固定する方法2:.bindを使う
   // }.bind(this));
   // thisのbindの引数で与えたオブジェクトに変えることもできるよ
   }.bind({ first_name: "Akina" })
  );
 },
};
console.log(obj2.first_name);
obj2.printFullName();

検証して実行結果を確かめると・・・

console.logを使って処理の流れを見れば理解しやすい。

その6に続く

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です