[深潜学習]2週目(2)
7678 ワード
10.オブジェクト共通
10.1対象とは?
JavaScriptはオブジェクトベースのプログラミング言語です
元の値以外の値はすべてオブジェクトです
元のタイプのオブジェクトタイプ1つの値複数のタイプの値1つの単位を構成する複合材料構造の変更できない値
JavaScriptで使用可能なすべての値=프로퍼티 값
関数値が
0個以上のプロパティからなる集合
JavaScriptはオブジェクト向けの言語ですか?
オブジェクト向け言語(x)オブジェクト向けプログラミング言語(o)
関数とオブジェクトを別々に表示できません
10.2オブジェクトテキストからオブジェクトを作成する
クラスベースのオブジェクト向け言語
≪インスタンス|Instance|emdw≫
クラスによって作成され、メモリに格納されるエンティティ
オブジェクト向けプログラミングのオブジェクト=クラス+インスタンス
クラスは、インスタンスを作成するテンプレートです.
プロトタイプベースのオブジェクト向け言語
オブジェクト範囲の
文字:理解可能な文字または約定記号を使用して値を生成する記号
≪オブジェクト文字|Object Text|oem_src≫:0個以上のアウトラインを定義してオブジェクトを作成します.
変数が割り当てられると、JavaScriptエンジンはオブジェクトテキストを解析してオブジェクトを作成します.
オブジェクトテキストのかっこ!=コードブロック->自己終端Xセミコロンを付けなければなりません.
オブジェクトテキスト以外のすべてのオブジェクトの作成方法は、関数を使用してオブジェクトを作成します.
10.3%
設定キー:空の文字列を含むすべての文字列またはシンボル値
minjuKim : 15 ✅
minju kim : 15 ❌
"minju-kim" : 15 ✅
obj[key] = minju // key = kim 이라는 변수일 때 {kim : minju} 객체 생성
既存の鍵を繰り返し宣言すると、その後に宣言された鍵は、前の鍵の値を上書きする.
設定値:JavaScriptで使用可能なすべての値
->関数ドメインの組み込み
プロパティをカンマで区切る
10.5%アクセス
プロパティへのアクセス方法
1.ピリオドプロシージャアクセス演算子(.):ピリオドマークほう
2.かっこプロパティアクセス演算子([]):かっこ記号
かっこ内のキーは引用符で囲まなければなりません
参照時にマスクをしない場合は、識別子として解釈されます.
オブジェクトが存在しないPropertyアクセスは
undefined
を返します.構成鍵は識別子命名規則に従う
->両方の記号を使用可能
->それ以外の場合は、数字文字列以外の角カッコ記号のみを使用します.
❌
person.1
person.'1'
✅
person.[1]
person.['1']
person.last-name
node.js -> ReferenceError
ブラウザ->NaN(またはwindow propertyに格納されているname値)
person.last-nameの変数に引用符がない場合は、コード(person.last-name)として解釈され、personオブジェクトのproperty lastからnameという変数を減算します.
person.オブジェクトlastがない場合はundefinedを返し、nameという変数の検索を開始します.
この場合、node環境にはnameという変数がないため、エラーが発生します.
ブラウザ環境では、windowオブジェクトにnameというプロファイルが存在します.
プロファイルは文字列ですが、数値演算子が使用されており、name変数はデフォルトでは数値ですが、数値データではないため、結果値として出力されます.
10.6%の価格更新
既存のプログラムに値を割り当てる->更新値
10.7%動的作成
存在しない構成の値の指定->構成の動的作成
10.8%削除
delete演算子を使用してプロファイルを削除できます
let person = {
name : "minju"
}
console.log(person.name) //minju
delete person.name;
console.log(person.name) // undefined
10.9拡張可能ES 6に追加されたオブジェクト文字
10.9.1%サムネイル表示
ES 6でProperty値として変数を使用する場合は、変数名がPropertyキーと同名の場合にキーを省略できます.
let x = 1, y = 2;
const obj = {x, y};
console.log(obj) // {x : 1, y : 2};
10.9.2計算されたプロパティ名
プロパティキーを動的に作成します.
式
let i = 0;
obj["serial-" + ++i] = i; // es5
obj[`serial-${++i}`] = i; // es6
10.9.3方法サムネイル表示
let obj = {
func1 : function() {
console.log("es5 grammar")
}
func2() {
console.log("es6 grammar")
}
}
上記の例に示すように、es 6構文は、方法を簡略化された方法として指定することができる.この宣言の構文はes 5がPropertyに関数を割り当てる方法とは異なる.
11.元の値とオブジェクトの比較
元のタイプのオブジェクトタイプが変更できない値変更可能な値の実際の値は、参照値を保存して別の保存参照値に割り当てると、元の値が保存参照値にコピーされ、保存値から転送参照に渡されます.
11.1元の値
11.1.1不変値
一度に作成した元の値は読み取り専用に変更できません
変数値の変更の意味
1.元の値の再割り当て
2.新しいメモリ容量を保持し、再割り当てされた値を保存
3.変数参照のメモリ領域アドレスが変更されました(不変性)
したがって、不変性を持つ元の値を割り当てた変数は、再割り当て以外に変数値を変更する方法はありません.
11.1.2文字列と不変性
元の値を保存するには、必要なメモリ容量のサイズを決定する必要があります.
他の元の値とは異なり、文字列の文字数によってメモリ領域のサイズが決まります->JavaScriptでは、開発者の利便性のために元のタイプの文字列タイプが用意されています.
文字列は配列に似たオブジェクトであり、アクセス性はかわいい->配列に似ています.
ただし、元のデータは変更できません(再割り当て可能)
類似パターンオブジェクト
インデックスは、
11.1.3転送
変数に元の値を持つ変数を割り当てる
->割り当てられた変数の元の値がコピーされ、割り当てられた変数に転送されます.
=値による転送
別のメモリ領域に格納されている値...?
同じ元の値を参照して変数を再割り当てする場合は、新しいメモリ領域への値の再割り当てを参照してください...?
変数は値ではなくメモリアドレスによって渡されます
識別子=メモリアドレスに添付された名前
渡されたメモリアドレスからメモリ領域にアクセスし、値を参照します.
この2つの変数の元の値は、異なるメモリ領域に格納された独立した値であり、いずれの変数も再割り当てによって値を変更しても干渉されません.
11.2オブジェクト
オブジェクトが構成を動的に追加および削除できるため、メモリサイズを事前に決定できません.
JavaScriptオブジェクトの管理方法
Propertyキーをインデックスとして使用するハッシュ・テーブル・メソッド(100%ではなく近似)
これはクラスベースのプログラミング言語とは異なり、オブジェクトを作成する前にプログラムと方法を事前に決定しているため、効率が低下します.
したがって、v 8エンジンはクラスを隠す方式を選択してPropertyに効率的にアクセスする
11.2.1変更可能な値
割り当てられたオブジェクトの変数によって格納されたメモリアドレスからメモリ領域にアクセス-参照値にアクセス
参照値=オブジェクトのメモリ領域を格納するアドレス
オブジェクトを割り当てる変数
11.2.2参照転送
オブジェクトを指す変数を別の変数に割り当てると、元のオブジェクトの参照値がコピーされ、渡されます.
オブジェクトを変更すると、2つのオブジェクトが1つのオブジェクトを共有するため、別のオブジェクトに影響します.
値による転送と参照による転送
いずれも識別子が記憶するメモリ領域のアドレス値を有し、その主周波数値が参照する値が元の値であるか参照値であるかの間に差があるのみである
オブジェクトは異なるメモリ領域で参照されるため、ピア比較でもマッチング比較でも異なる値になります.
Reference
この問題について([深潜学習]2週目(2)), 我々は、より多くの情報をここで見つけました https://velog.io/@deli-ght/딥다이브-스터디-2주차-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol