CALLとは何ですか?
kotlinMDN説明:指定されたthis値と、別々に与えられた1つ以上の引数で関数を呼び出す。
なぜ電話するのですか?
kotlincallを使えば、このポインティングを別のものに変更することができる。
通話の用途は?
kotlincall(thisArgarg1, arg2, arg3...) thisArg関数の実行時に使用される arg1, arg2, arg3: 引数のリスト
警告:非厳密モードでは、nullまたはundefinedを指す "this "は自動的にグローバルオブジェクトとして指定され、元の値はラップされます。
コールに戻り値はありますか?
javascriptcallメソッドに戻り値がない場合は未定義を返す。
電話の例
javascriptfunction person (name, age) { this.name = name; this.age = age } function woman () { person.call(this,'beautyTang',22) // 1この人への指さしが、この女性への指さしに変わった。 // 2そのため、woman関数の中でperson関数を実行している。'beautyTang',22どちらも人物のパラメータで、名前と年齢を指す。 } console.log(new woman()) // アウトプット・ウーマン {name: "beautyTang", age: 22} これは女性を指している。 console.log(new woman().name) //輸出ビューティータン
ソースコード解析の呼び出し
javascript上記の例で言えば、コールによってこの点がどう変わるのか? Function.prototype.call = function(context) { context = context || window // コンテキストが存在するかどうかを判断し、存在すればコンテキストとなり、存在しなければグローバルスコープとなる。 context.fn = this // これは、この関数を呼び出した人を指す。 var arg = [] // ストレージ・パラメーター for(let i =0; i<arguments.length;i++) { // すべての引数をargに押し込む。 arg.push('arguments[' + i + ']') } //ここでは es6 の構文を使用する。 var result = ctx.fn(...array) //es3 var reslut = eval('ctx.fn(' + array + ')') evalメソッドはストリクト・モードでは使用できない。 delete ctx.fn // 属性を削除する return result // 結果を返す }
呼び出しの最終目標は、オブジェクトにfnを追加して関数を実行し、最終的にプロパティを削除して結果を返すことです。
最後に
markdown毎日、ソースコードの内訳を更新していくので、フロントエンドの旅がすべて順調であることを願っている。





