スポンサーリンク

【JavaScript】基本あれこれ(クラス、アロー関数、オペレーター、マップ)

JavaScript
スポンサーリンク

クラスの作成

クラスの書き方

親クラスHumanと、親クラスを継承した子クラスPerson。

 # 親クラス
class Human {
gender = 'male';
printGender = () => {
console.log(this.gender);
}
}

# 子クラス
class Person extends Human {
name = 'Tom';
gender = 'male';
printMyName = () => {
console.log(this.name);
}
}

const person = new Person();
person.printMyName();
person.printGender();

Console

"Tom"
"male"

親クラスを継承した子クラスでは、親クラスのメソッドやプロパティをそのまま使える。

アロー関数

上記は、ES6(ES2015)で新たに定義されたアロー関数(=>を使った記法。

従来の記法

 function sayHi(name) {
console.log('Hi ' + name);
}

# こうも書ける
const sayHi = function(name) {
console.log('Hi ' + name);
}

アロー関数を使うと

 const sayHi = name => {
console.log('Hi ' + name);
}

functionも書かなくてOK。

引数が1つであれば()も不要。引数が複数であれば(param1, param2)のように今までどおり()が必要でカンマ区切り。

リターンで返すのであればより簡潔

従来の記法

const returnName = name => { 
return name;
}

アロー関数を使うと

 const returnName = name => name

オペレーターを使ったスプレッド構文

オペレーターとは ... 3つのドットのこと。

スプレッド構文は、オペレーターを用いて配列やオブジェクトの要素を展開する

配列の結合やオブジェクトのコピーが簡単にできる。

配列の結合

 const numbers = [1, 2, 3];
const newNumbers = […numbers, 4, 5];

console.log(newNumbers);

Console

[1, 2, 3, 4, 5]

配列の要素がその場で展開され、受け渡されている。

オブジェクトのコピー

 const Person = {
name: 'Tom'
};

const newPerson = {
…Person,
age: 18
}

console.log(newPerson);

Console

{
name: 'Tom',
age: 18
}

データ型による違い【コピーと参照】

基本型(数値や文字列)はコピー

数値型(number), 文字列型(string), 真偽型(boolean)の値を変数に代入すると、値はそのままコピーされる。

 let number = 1;
let number2 = number;

# 再代入
nember = 3;

console.log(number2);

Console

1

nember に 3 を再代入しているが、代入時の値 1 は変わらない。

オブジェクトや配列は参照型

オブジェクトや配列、関数を代入した場合、それは参照値のコピーなので、参照先の値を変更すると結果も変わる。

 const person = {
name: 'Tom'
}
const person2 = person;

# 再代入
person.name = 'Karly';

console.log(person2);

Console

[object Object] {
  name: "Karly"
}

値をコピーしたい場合は、オペレーターを使う

配列やオブジェクトの値をそのままコピーしたい場合に便利なのが、上記のオペレーターを使ったスプレッド構文

変数 person2には、personの値そのものを渡しているため、値を再代入してもperson2の値は変わらない。

  const person = {
name: 'Tom'
}

const person2 = {
…person
};

# 再代入
person.name = 'Karly';

console.log(person2);

Console

[object Object] {
  name: "Tom"
}

配列処理に便利なmapメソッド

各要素にアクセスする便利なmapメソッド

配列の各要素に対して、コールバック関数を実行する結果は配列を返す

 const numbers = [1, 2, 3];
const doubleNumArray = numbers.map((num) => {
return num * 2;
});

console.log(numbers);
console.log(doubleNumArray);

Console

[1, 2, 3]
[2, 4, 6]

参照

コメント