JS手書き関数呼び出し

= Function.prototype.myCallの機能(コンテキスト、... ARR){
     IF(コンテキスト=== ヌル ||コンテキスト=== 未定義){
        // この値は自動的にグローバルオブジェクトヌル未定義で指定(ブラウザウィンドウ)のための 
        コンテキスト= ウィンドウ
    } { 
        コンテキスト =オブジェクト(コンテキスト)// 元の値の値は、この時点の(数、文字列、ブール値)オブジェクトインスタンスの元の値となり
    } 
    CONST specialPrototype =記号(「特別な特性シンボル「)// 一時的に記憶する機能のための 
    コンテキスト[specialPrototype] = この ; // この関数は、暗黙のバインディングコンテキストに向けられている 
    のletコンテキストの検索結果を= [specialPrototype](ARR ...)。// 暗黙結合機能によって実行されると、パラメータが通過
    削除コンテキストが[specialPrototype]; // 属性のコンテキスト・オブジェクトを削除
    返す検索結果を; //は、関数の実行結果を返します
;}
せてテスト= { 
    名: "テスト" 
}、楽しい = { 
    FN:関数(){ 
          にconsole.log(この.nameの)
    } 
} 
fun.fn.myCall(テスト)
コンテキスト[specialPrototype] =この;この文の個人的な理解
に関連がある機能は、このMYCALLに指示物体を使用する場合、
あなたは、の関数として、値をこのキーに対応するspecialPrototype添加されるオブジェクトに上記の方法を使用する場合このキーと値のペアの(この問題のポイント、あなたがMYCALLを使用しており、これは、呼び出し元の関数MYCALLでは、上記fun.fnこと、それはspecialPrototypeを追加する文脈で、最終的です:fun.fn)
コンテキスト[specialPrototype](... ARR);あなたが実際にfun.fnと呼ばれているコード行を実行するが、今回はコンテキストとなり、このコールspecialPrototypeにポイントがありますとき
、この文脈でそう代わりに完了していますこの中fun.fn
 

おすすめ

転載: www.cnblogs.com/web-chuan/p/11592261.html