[深潜学習]2週目(2)

7678 ワード

10.オブジェクト共通


10.1対象とは?


JavaScriptはオブジェクトベースのプログラミング言語です
元の値以外の値はすべてオブジェクトです
元のタイプのオブジェクトタイプ1つの値複数のタイプの値1つの単位を構成する複合材料構造の変更できない値
JavaScriptで使用可能なすべての値=프로퍼티 값
  • は、一級オブジェクトとしての関数
  • を含む.
    関数値が
  • の場合=メソッド
  • オブジェクト=Property+メソッド
    0個以上のプロパティからなる集合
  • Property:キーと値で構成され、オブジェクトの状態を表す値(データ)
  • メソッド:Propertyの動作
  • を参照および操作可能
    JavaScriptはオブジェクト向けの言語ですか?
    オブジェクト向け言語(x)オブジェクト向けプログラミング言語(o)
    関数とオブジェクトを別々に表示できません

    10.2オブジェクトテキストからオブジェクトを作成する


    クラスベースのオブジェクト向け言語
  • クラスを予め定義し、必要に応じて新しい演算子呼び出しジェネレータを使用してインスタンスを作成し、オブジェクト
  • を作成する.
  • C++, Java
  • ≪インスタンス|Instance|emdw≫


    クラスによって作成され、メモリに格納されるエンティティ
    オブジェクト向けプログラミングのオブジェクト=クラス+インスタンス
    クラスは、インスタンスを作成するテンプレートです.
    プロトタイプベースのオブジェクト向け言語
  • は、複数のオブジェクトの作成方法をサポートします.
  • オブジェクト文字->最も一般的で最も簡単な方法
  • オブジェクトジェネレータ関数
  • ジェネレータ関数
  • Object.createメソッド
  • クラス
  • JavaScript
  • オブジェクト範囲の


    文字:理解可能な文字または約定記号を使用して値を生成する記号
    ≪オブジェクト文字|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変更可能な値


    割り当てられたオブジェクトの変数によって格納されたメモリアドレスからメモリ領域にアクセス-参照値にアクセス
    参照値=オブジェクトのメモリ領域を格納するアドレス
    オブジェクトを割り当てる変数
  • Property
  • を再割り当てなしで動的に追加
  • パーセンテージ値
  • を更新可能
  • 削除可能率
  • 欠点は、複数の識別子が1つのオブジェクトを共有できることです.

    11.2.2参照転送


    オブジェクトを指す変数を別の変数に割り当てると、元のオブジェクトの参照値がコピーされ、渡されます.
    オブジェクトを変更すると、2つのオブジェクトが1つのオブジェクトを共有するため、別のオブジェクトに影響します.

    値による転送と参照による転送


    いずれも識別子が記憶するメモリ領域のアドレス値を有し、その主周波数値が参照する値が元の値であるか参照値であるかの間に差があるのみである
    オブジェクトは異なるメモリ領域で参照されるため、ピア比較でもマッチング比較でも異なる値になります.