
클라우드 서비스 AWS
Egoing Lee
이 수업은 클라우드 서비스인 AWS(Amazon Web Services)의 기본적인 사용법과 파일의 저장공간을 제공하는 S3를 다루고 있는 수업입니다.
Basic
AWS
ライフコーディングで提供するJavaScript関連講義で、JavaScriptでデータを不変に扱う方法についての授業です。
JavaScriptでデータを不変に扱う方法
生データ型とオブジェクトの動作方法の違い
オブジェクトを複製する方法
元のオブジェクトを変更せずにレプリカを変更する方法
ライフコーディングのJavaScript Immutabilityクラスは、JavaScriptでデータを不変に扱う方法についての講義です。 JavaScriptの基本的な文法を知っている学習者を対象にデータを不変にすることで、ソースが破損するのを防ぐ方法を見てください。
この講義では以下の内容を取り上げています。
以下の内容は取り扱っておりません。
データを不変に扱うことで、データ間の干渉によるバグの可能性を大幅に削減できます。また、データが変更されたかどうかを非常に簡単にチェックできます。それ以外に、Hot module reloading、time travelなどの高度な技術を実装する上で基礎となることもあります。
以下のコードの結果をすべて期待できる場合は、このクラスを聞く必要はありません。
var n1 = 1;
var n2 = 1;
console.log(n1 === n2);
=> trueです。当然です。
var o1 = {name:'kim'}
var o2 = {name:'kim'}
console.log(o1 === o2);
=> false です。少し曖昧です。 JavaScriptは、値が変わらない生データ型と値が変わる可能性のあるオブジェクトを別々に扱います。
var o1 = {name:'kim'}
var o2 = o1;
o2.name = 'lee';
console.log(o1.name);
=> leeです。 o1は英文も知らず、自分が指しているnameの値が変わってしまいました。
var o1 = {name:'kim'}
var o2 = Object.assign({}, o1); // 空のオブジェクトに o1 をコピーします。
o2.name = 'lee';
console.log(o1.name);
=>キムです。 o2を変更してもo1は影響を受けません。 o2についてo1は不変な状態を維持できるようになります。
var o1 = {score:[1,2]}
var o2 = Object.assign({}, o1);
o2.score.push(3);
console.log(o1.score)
=> [1,2,3] です。英語も知らず、o1がまた変わりました。スコアはオブジェクトの一種である配列だからです。
var o1 = {score:[1,2]}
var o2 = Object.assign({}, o1);
o2.score = o2.score.concat(); //配列をコピーします。
o2.score.push(3);
console.log(o1.score)
=> [1,2] です。
他の方法もあります。全面コピーをするのです。
var o1 = {score:[1,2]}
var o2 = JSON.parse(JSON.stringify(o1));
o2.score.push(3);
console.log(o1.score)
=> [1,2] です。
オリジナルが変わらないように気を付けるのも良いですが、オリジナルがまったく変わらないようにすることも可能です。
var o1 = {name:'kim'}
Object.freeze(o1);
o1.name = 'lee';
console.log(o1.name);
=> 'kim'です。
しかし、オブジェクトはこれではありません。
var o1 = {score:[1,2]}
Object.freeze(o1);
o1.score.push(3);
console.log(o1.score);
// [1,2,3] です。
防御的に冷凍する必要があります。
var o1 = {score:[1,2]}
Object.freeze(o1);
Object.freeze(o1.score);
o1.score.push(3);
console.log(o1.score);
//変更しないでください。さらに抗議性エラーを発生させてしまいます。
この講義を聞くには、以下の先行知識が必要です。
(どちらか一つを勉強してください。)
合計12の映像からなる1時間分の授業です。
このレッスンはCCライセンスに準拠しており、以下のリンクでもご覧いただけます。
https://opentutorials.org/module/4075良い知識を共有してくれる生活コーディングに感謝の言葉を伝えます。
学習対象は
誰でしょう?
データを不変に扱ったバグの可能性を低くしたい方
高度なJS技術を実装する基礎を築きたい方
前提知識、
必要でしょうか?
JavaScript
NodeJS(選択)
全体
12件 ∙ (1時間 0分)
1. 授業紹介
05:11
3. 変数割り当て方式の比較
02:26
4. 初期値の比較
05:46
5. オブジェクトの可変性
04:07
6. オブジェクトのコピー
04:14
7. 入れ子になったオブジェクトのコピー
07:04
8. 不変関数の作成
04:38
9. 可変および不変APIの比較
04:56
12. 授業を終えて
07:17
無料
知識共有者の他の講座を見てみましょう!
同じ分野の他の講座を見てみましょう!