Javascript 的caller,callee,call,apply怎么使用
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,本篇内容主要讲解"Javascript 的caller,callee,call,apply怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Javas
千家信息网最后更新 2025年11月14日Javascript 的caller,callee,call,apply怎么使用
本篇内容主要讲解"Javascript 的caller,callee,call,apply怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Javascript 的caller,callee,call,apply怎么使用"吧!
1、caller
JScript参考中说明为:返回一个对函数的引用,该函数调用了当前函数。如何理解这句话, 先来举个简单的例子:
// caller demo {function callerDemo() { if (callerDemo.caller) { var a= callerDemo.caller.toString(); alert(a); } else { alert("this is a top function"); }}function handleCaller() { callerDemo();}上面的例子,可以看出,它就是返回一个调用数据的引用。(指向请求调用的函数) 也由此可以看出,当在这样的情况下,
2、callee
JScript参考中的说明为:返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
需要注意的是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); }} 从上面的例子可以看出,callee可以用来打在执行函数,也就是指向被调用的函数。上面的例子就说明calee可以打印其本身,当然还有其它的一些用途。而length属性中arguments.length是实参长度,arguments.callee.length是形参长度,由此可以判断调用时形参长度是否和实参长度一致。
3、call 和 apply
call方法JScript参考中的说明:调用一个对象的一个方法,以另一个对象替换当前对象。call([thisObj[,arg1[, arg2[, [,.argN]]]]]),但是没有示例
apply方法JScript参考中的说明:应用某一对象的一个方法,用另一个对象替换当前对象。apply([thisObj[,argArray]])
实际上这两个的作用几乎是相同的,要注意的地方是call(thisObj[,arg1[, arg2[,)中的arg参数可以是变量,而apply([thisObj[,argArray]])中的参数为数组集合。下面来看看call, apply的具体应用
// 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);} 从上面简单的例子可以看出,call和apply可以把当前的参数传递给另外一个函数的参数中,从而调用另一个函数的应用。有的时候这是一个很实用的方法,当然,用call或是apply(是参数或是数组),看实际情况而定了。
下面来看另一个应用
call和apply还有一个技巧在里面,就是用call和apply应用另一个函数(类)以后,当前的函数(类)就具备了另一个函数(类)的方法或者是属性,这也可以称之为"继承"。看下面示例。
// 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);} 上面的例子可以看出,通过call之后,extend可以继承到base的方法和属性。
再看一个apply的应用
// 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!} 需要注意的是,要先点"原始的adApplyDemo('world')"按钮,如果先点"应用后的adApplyDemo('world')"按扭,会先应用了apply方法,这样原始的值将会被改变。或许有的朋友没有发现有什么特别的,我在这里指明一下,当点击左边的按扭时,只有"this is never-online, BlueDestiny 'world' demo", 当点击右边的按扭后,会现结果是"this is never-online, BlueDestiny 'hello world' demo",再点点左边的按扭,看看结果又会是什么呢?自己试试看:D,已经改写了函数adApplyDemo。这个例子则说明了call和apply的"真正"作用了。
到此,相信大家对"Javascript 的caller,callee,call,apply怎么使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
函数
方法
对象
应用
例子
长度
参数
属性
面的
形参
参考
实际
原始
实用
也就是
作用
内容
就是
情况
指向
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
帮我找找网络安全的手抄报
网络安全班会三年级
软件开发企业企业所得税税赋
服务器硬盘普通台式电脑可以用吗
淄博餐饮管理软件开发
服务器安全狗win7
南宁市瓜苗网络技术有限公司
合肥市软件开发公司
tibero数据库
数据开发和数据库开发一样吗
sql2012复制数据库
南通海航软件开发售后服务
如何更换小程序服务器
倩女手游最新服务器
wps智能拆分数据库
什么是软件开发的约束
网络技术对教育的影响作文
淄博软件开发服务
网络安全工程师招聘简章
计算机网络安全是是一门涉及
江阴信息软件开发代理品牌
医院系统软件开发公司
常见软件开发调试
东莞财务进销存软件开发
小米商城下的原神是哪个服务器
部署dhcp服务器
河南特色软件开发市场报价
赢在舌尖网络技术有限公司
武汉神州数码交换机软件开发
农业信息技术的核心是数据库