22日目-2022.03.22


今日の勉強の内容


(モダンJavaScriptチュートリアル復習)

オブジェクトのデフォルト


混同または再注意が必要な内容

  • オブジェクト構成に指定した関数をメソッドと呼びます.

  • メソッドは、オブジェクトに格納された情報にアクセスできる必要があります.ただし、メソッドの内部では、このキーワードを使用してオブジェクトにアクセスできます.

  • JavaScriptでは、この機能をすべての関数で使用できます.

  • この値は実行時に決定されます

  • この値は、関数を宣言するときに使用できますが、関数を呼び出す前に指定しません.

  • 矢印関数には独自のthisはありません.矢印関数でthisを使用すると、外部からこの値が取得されます.

  • コンストラクション関数は通常の関数ですが、関数名の頭文字は大文字で、区切りに使用されます.

  • コンストラクション関数はnew演算子とともに呼び出され、newとともに呼び出されると内部で暗黙的にthisが作成され、最後にthisが返されます.

  • すべての関数は、コンストラクション関数/複数の類似オブジェクトの作成に使用できます.

  • 翻訳文法?左側の評価ターゲットがnullかundefinedかを確認し、nullまたはundefinedでない場合は評価を続行します.

  • ?.なんだ.左側の評価が不要な場合は、
    存在しなければならない値です.存在しないと、エラーが見つかりにくくなります.

  • ユニーク識別子を作成するための構成部品
  • let id1 = Symbol("id");
    let id2 = Symbol("id");
    
    alert(id1 == id2); // false
  • 素子型値は自動的に他の資料型に変換できません
    戻る必要がある場合は、toString()メソッド
  • を使用します.
    (Core JavaScriptベース)

    <実行コンテキスト>


  • スコットランド識別子の有効範囲
    スキャンチェーンは、内側から外側へ順次検索されます.

  • 宣言時のLexicalEnvironmentを見つけ、最後にグローバルコンテキストのLexicalEnvironmentです.

  • 各外部環境リファレンスは、宣言時に存在するLexicalEnvironmentのみを参照するため、最近の要素からアクセスできます.

  • 複数のブランチで同じ識別子が宣言されている場合は、ブランチチェーンで最初に検出された識別子にのみアクセスできます.

  • 特定の関数で変数を宣言する場合、グローバルスペースで宣言された同じ名前の変数にアクセスできません.これが変数の隠匿化です.

  • 実行コンテキストの作成
    VariableEnvironmentとLexicalEnvironmentの構成は同じです.
    この2つの関数は、収集パラメータ名、変数の識別子、宣言関数の関数名などの環境記録、外部環境参照から構成されます.

  • これは、実行コンテキストをアクティブにするときに指定したthisを保存します.
    値は、関数を呼び出す方法によって異なり、指定されていない場合はグローバルオブジェクトが保存されます.

  • コード内の変数にアクセスするには、次の手順に従います.
    	1. 현재 컨텍스트의 LexicalEnvironment를 탐색해 발견되면 그값 반환
    	2. 발견 못하면 outerEnvironmentReference에 담긴 LexicalEnvironment를 탐색.
    	3. 전역컨텍스트의 LexicalEnvironment에서도 찾지 못하면 undefined
  • 課題


    エラーを回避するために
  • を変更します.
    function makeUser() {
      return {
        name: "John",
        ref: this
      };
    };
    
    let user = makeUser();
    alert( user.ref.name );
    
    -> 
    
    function makeUser() {
    	return {
        	name: "John",
            ret() {
            return this;
            }
        }; 
        }
    let user = makeUser();
    alert(user.ref().name);  // John
    この値を使用すると、オブジェクトが定義されていないためエラーが発生します.
    2.calculatorという名前のオブジェクトを作成し、3つの方法を実装してみます.
    read()는 프롬프트 창을 띄우고 더할 값 두 개를 입력받습니다. 입력받은 값은 객체의 프로퍼티에 저장합니다.
    sum()은 저장된 두 값의 합을 반환합니다.
    mul()은 저장된 두 값의 곱을 반환합니다.
    let calculator = {
      sum() {
        return this.a + this.b;
      }
      mul() {
        return this.a * this.b;
      }
      read() {
        this.a = +prompt("첫번째 값","");
        this.b = +prompt("두번째 값","");
      }
    };
    
    calculator.read();
    alert( calculator.sum() );
    alert( calculator.mul() );
    readに+を加えて、プロンプト値を数値にします.

    学習ソース


    JavaScript。info
    コアJavaScript-鄭在南-知音
    上の内容は勉强の中で私が理解した内容で、いくつか间违った内容があるかもしれません.
    灰毒中発見時の修正