[JS]#2機能オブジェクト(1)


エンジンの観点から機能オブジェクトを見る


きのうけいしき

  • ビル-in Functionオブジェクト
    Function.prototype.call()
  • 機能オブジェクト
  • function book(){...}
  • var book = function(){...}
  • はすべてインスタンスですが、新しい演算子で作成するインスタンスを区別するためにマークされた関数オブジェクト
  • です.
  • 関数の例
    new演算子(new Book()など)を使用します.プロトタイプに接続する方法で
  • を作成

    関数オブジェクトの作成

    var book = function(){...};
    エンジンが関数キーに遭遇すると、構築された機能オブジェクトのプロトタイプに関連付けられた方法で関数オブジェクトが作成されます.
    作成したオブジェクトをbook変数に割り当てます.
    book()として呼び出されます.(関数オブジェクトなので呼び出すことができます.)

    オブジェクトの保存


    関数を呼び出すには、作成した関数オブジェクトを保存する必要があります.
    関数オブジェクトの格納形式はkey/value形式です.
  • は{name:value}として
  • を保存する
  • {book:作成された機能オブジェクト}形式
  • 関数呼び出し時
  • に格納されたオブジェクトから
  • 関数名を検索(book)
  • 値を求めて、
  • の値が機能オブジェクトである場合、
  • が呼び出される.

    思想の転換

  • 関数を呼び出すと、エンジンは{name:value}propertyとして関数の変数と関数の実行環境を設定し、関数コードを実行します.
  • (name:value})は、JSのアーキテクチャとメカニズムをよりよく理解するためにPropertyに変換する必要があります.
  • 関数(){}コードでは、関数の変数と関数を{name:value}に連想する必要があります.(エンジン観点)
  • プロシージャと構造の生成


    関数オブジェクト作成プロセス


  • function sports(){...}シェイプでfunctionキーワードに遭遇しました.

  • オブジェクトを作成して保存します.
  • { sports: {...} }
  • sportsは、機能オブジェクトの名前です.
  • オブジェクト{...}プロップティはいません.
  • 空のオブジェクトの塗りつぶしを開始します.

    モーションオブジェクトシェイプ(Motion Object Shape)


  • sports
    arguments: null
    caller: null
    length: 0
    name: "sports"
    prototype:
    -- constructor: sports
    -- proto: Object.prototype
    proto: Function.prototype
    var sports=function(){}を展開すると、上記の設定がリストされます.
    Prototypeと同じ外部__proto__は、構築された機能オブジェクトのPrototypeを含む.
    Prototypeの__proto__には、構築されたオブジェクトのPrototypeが含まれます.
  • sports = {
      prototype: {
        constructor: sports
        __proto__: {}
      }
    }
  • モーションオブジェクト付加プロトタイプオブジェクト
  • コンストラクション関数Propertyを
  • プロトタイプに追加
  • prototype.コンストラクタ参照モーションオブジェクト
  • プロトタイプにprotoオブジェクトをアタッチ
  • ES 5規格ではprotoではなくES 6にあります.
  • エンジンとして定義されます.
  • ES 5規格では標準ではないが、2000年初頭からFire Foxで使用されているため、依然として適用されている.
  • sports = {
      arguments: {},
      caller: {},
      length: 0,
      name: "sports",
      prototype: {
        constructor: sports
        __proto__: Object.prototype
      }
      __proto__: Function.prototype
    }
  • バージョンのObject.プロトタイプメソッド
  • オブジェクトインスタンスを作成することによってprototypeを作成する.protoに添付します.
  • モーションオブジェクトにprotoオブジェクトをアタッチする
  • sports.__proto構造.
  • バージョンのFunction.prototypeメソッドを使用して関数インスタンスを作成し、スポーツを行います.protoに添付します.
  • のモーションオブジェクト項目の初期値を設定します.
  • パラメータ、発信者、length、name property
  • 関数オブジェクト構造

  • 関数オブジェクトにはプロトタイプがあり、コンストラクション関数が接続されています.protoは接続され、オブジェクトインスタンスは接続されています.
  • 関数オブジェクトにはprotoがあり、機能インスタンスが接続されています.Array接続Arrayインスタンス、String接続Stringインスタンス.
  • 関数実行環境の識別/環境の保存


    関数実行環境の識別

  • 関数の実行環境を識別する必要があるのはなぜですか?
    これは、
  • 関数を呼び出すときに、実行する環境を理解してから、実行環境に従って実行する必要があるからです.
  • 運転時優先パラメータ
  • 関数キーに遭遇し、関数オブジェクトを作成すると、→静的に作成されます.(Lexical Environment)
  • 構成
  • 実行領域(関数が属する範囲)、パラメータ、関数コード等
  • .

    関数実行環境の保存

  • 関数オブジェクトを作成しますが、すぐには実行されません.そのため、関数を呼び出すときに使用する環境を保存する必要があります.
  • 保存
  • の場所には、作成した関数オブジェクトを読み込むときに、他の場所を読み込む必要がなく実行できる環境が設定されています.
  • は、作成された機能オブジェクトを内部プロジェクトとして識別するための優先パラメータ({name:value})を設定します.
  • 内部構成:汎用/オプション


    内部プロパティは、エンジンが内部処理に使用するプロパティであり、外部ではspecタグとして使用できません.
  • specタグ:[]形態
    ⇒ Ex: [[Scope]]
  • 内部プロパティは、共通プロパティとオプションプロパティに分けられます.

  • 公共事業
    すべてのオブジェクトで共通のアイテムに設定され、すべてのオブジェクトが「ビル-in」オブジェクトとして作成されたオブジェクトを指します.

  • せんたくプログラム
    オブジェクトに応じて選択的に設定された項目.このオブジェクトにのみ適用されます.
    ©Ex:Arrayオブジェクトに設定されているがStringオブジェクトには設定されていない項目.
  • パブリック内部プログラム



    すべてのオブジェクトに対して設定された内部投影(さらに説明する部分のみ)
  • [[Prototype]:Mathなどのオブジェクトのプロトタイプが空またはオブジェクトのプロトタイプです.
  • [クラス]:オブジェクトタイプに応じてオブジェクトタイプが区別されます.
  • [拡張可能]:オブジェクトにアイテムを追加可能
  • オプションの内部プログラム



    構築されたオブジェクトのタイプに応じて、オプションの内部投影を行います.