本篇内容主要讲解“Javascript 的caller,callee,call,apply怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Javascript 的caller,callee,call,apply怎么使用”吧!
创新互联是一家专注于做网站、成都网站制作与策划设计,大同网站建设哪家好?创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:大同等地区。大同做网站价格咨询:18982081108
// caller demo {function callerDemo() { if (callerDemo.caller) { var a= callerDemo.caller.toString(); alert(a); } else { alert("this is a top function"); }}function handleCaller() { callerDemo();}
需要注意的是callee拥有length属性,这个在有的时候用于验证还是比较好的。
function calleeDemo() { alert(arguments.callee);}function calleeLengthDemo(arg1, arg2) { if (arguments.length==arguments.callee.length) { window.alert("验证形参和实参长度正确!"); return; } else { alert("实参长度:" +arguments.length); alert("形参长度: " +arguments.callee.length); }}
// simple call demofunction simpleCallDemo(arg) { window.alert(arg);}function handleSPC(arg) { simpleCallDemo.call(this, arg);}// simple apply demofunction simpleApplyDemo(arg) { window.alert(arg);}function handleSPA(arg) { simpleApplyDemo.apply(this, arguments);}
// inheritfunction base() { this.member = "never-online"; this.method = function() { window.alert(this.member); }}function extend() { base.call(this); window.alert(member); window.alert(this.method);}
// advanced apply demofunction adApplyDemo(x) { return ("this is never-online, BlueDestiny '" + x + "' demo");}function handleAdApplyDemo(obj, fname, before) { var oldFunc = obj[fname]; obj[fname] = function() { return oldFunc.apply(this, before(arguments)); };}function hellowordFunc(args) { args[0] = "hello " + args[0]; return args;}function applyBefore() { alert(adApplyDemo("world"));}function applyAfter() { handleAdApplyDemo(this, "adApplyDemo", hellowordFunc); alert(adApplyDemo("world")); // Hello world!}