Function.prototype.apple.callのまとめ
2046 ワード
ネットでコードを見ましたが、いいと思います.分析してみます.
まず、applyとcallの基本的な使い方を知る必要があります.その目的は呼び出し方法のthisの方向を変えて、それを着信の対象に向けることです.
コード:consone.log
var console = window.console || {log: function () {}};
var log = console.log;
console.log = function(tips,message){
Function.prototype.apply.call(log, console, arguments);
//Function.prototype.call.call(log, console, arguments);
//Function.prototype.call.apply(log, [console, arguments]);
//
//var args=[].slice.call(arguments);
//log.apply(console,args);
}
実行結果:
console.log(" ","This is test");
This is test
分析:
Funtion.prototype.apple.callをどう理解すればいいですか?はい
まずFuntions.prototype.applyを全体として見られます.
FunctionApple.call;
この文を訳してください.
log.FuntionApple;
それからまた訳してください.分かりますよね.普通の方法で呼びます.
consolone.log(argments);
発散思考:
Function.prototype.call.apply(logs);
FunctionCall.apply(log,[console,arguments]);
log.FunctionCall(console,arguments);
console.log(arguments);
小tips:
Function.prototype.apple.call Function.prototype.cal.callに等しいです.
Function.prototype.call.appy Function.prototype.apple.applyに等しい
無料で栗をプレゼントします.
function testA(a){
console.log('aaaa',a);
}
Function.prototype.apply.call(testA,window,['Mike']);
//Function.prototype.call.call(testA,window,['Mike']);
//testA.apply(window,['Mike']);
//window.testA('Mike');
//Function.prototype.apply.apply(testA,[window,['Mike']]);
//Function.prototype.call.apply(testA,[window,['Mike']]);
以上の実行結果は同じです.
はい、aaaa Mikeです
使用法をまとめる:
XXXはcallまたはapplyでもいいです.childはきっとparentが指す対象です.
Function.prototype.XX.cal(child,parent,argments|array);
Function.prototype.xp.apply(child,parent,argments|array);