博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中arguments,callee,caller
阅读量:6352 次
发布时间:2019-06-22

本文共 2429 字,大约阅读时间需要 8 分钟。

在IE中,可以通过event或window.event获得全局event;而在其他浏览器中,则通过 arguments[arguments.length-1]可获得event实例。但是如果是嵌套调用,如:用户触发事件调用functionA,而 functionA又调用functionB,再由functionB调用functionC,此时如果functionB或functionC中需要获 得event实例,IE仍可通过event或window.event获得,而其他浏览器通过arguments[arguments.length- 1]就无法获得了,通常习惯的做法是把event作为参数传递到functionB及functionC中.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <head>
        <title>关于arguments,callee,caller等的测试 </title>
        <meta http-equiv="content-type" content="text/html;" />
    </head>
    <body>
        <script type="text/javascript">
            function testArg() {
                var sTemp = "test()开始执行\n\n函数定义的正文:\n\n";
                sTemp += arguments.callee + "\n\n";
                sTemp += "传入参数的长度:\n";
                sTemp += arguments.length + "\n\n";
                sTemp += "传入参数的内容:\n";
                for (var i = 0; i < arguments.length; i++) {
                    sTemp += arguments[i] + "\n";
                }
                sTemp += "\n点击确定,开始调用a();";
                alert(sTemp);
                a(arguments);
            }
            function a(args) {
                var sTemp = "a()开始执行\n\n函数定义的正文:\n\n";
                sTemp += arguments.callee + "\n\n";
                sTemp += "传入参数的长度:\n";
                sTemp += arguments.length + "\n\n";
                sTemp += "传入参数的内容:\n";
                for (var i = 0; i < arguments.length; i++) {
                    sTemp += arguments[i] + "\n";
                }
                sTemp += "\n当前函数的调用者:\n";
                sTemp += arguments.callee.caller + "\n\n";
                sTemp += "\n点击确定,开始调用b();";
                alert(sTemp);
                b(args);
            }
            function b(args) {
                var sTemp = "b()开始执行\n\n函数定义的正文:\n\n";
                sTemp += arguments.callee + "\n\n";
                sTemp += "传入参数的长度:\n";
                sTemp += arguments.length + "\n\n";
                sTemp += "传入参数的内容:\n";
                for (var i = 0; i < arguments.length; i++) {
                    sTemp += arguments[i] + "\n";
                }
                sTemp += "\n当前函数的调用者:\n";
                sTemp += arguments.callee.caller + "\n\n";
                sTemp += "\n点击确定,开始调用c();";
                alert(sTemp);
                c(args);
            }
            function c(args) {
                var sTemp = "c()开始执行\n\n函数定义的正文:\n\n";
                sTemp += arguments.callee + "\n\n";
                sTemp += "传入参数的长度:\n";
                sTemp += arguments.length + "\n\n";
                sTemp += "传入参数的内容:\n";
                for (var i = 0; i < arguments.length; i++) {
                    sTemp += arguments[i] + "\n";
                }
                sTemp += "\n当前函数的调用者:\n";
                sTemp += arguments.callee.caller + "\n\n";
                alert(sTemp);
                alert("args.callee:\n" + args.callee);
                alert("args.callee.caller:\n" + args.callee.caller);
                alert("testArg.arguments.callee.caller:\n" + testArg.arguments.callee.caller);
            }
            ;
        </script>
        <input type="button" οnclick="testArg('iecn.net','深蓝蝴蝶','枫岩');" value="testArg('iecn.net','深蓝蝴蝶','枫岩');" />
    </body>
</html>

转载于:https://www.cnblogs.com/chris-oil/archive/2012/08/09/2630416.html

你可能感兴趣的文章
2015.06.04 工作任务与心得
查看>>
icinga2使用587端口发邮件
查看>>
hpasmcli查看HP服务器内存状态
查看>>
极客工具
查看>>
【14】Python100例基础练习(1)
查看>>
boost bind使用指南
查看>>
使用ntpdate更新系统时间
查看>>
Android M 特性 Doze and App Standby模式详解
查看>>
IE FF(火狐) line-height兼容详解
查看>>
谷歌Pixel 3吸引三星用户, 但未动摇iPhone地位
查看>>
VUE中使用vuex,cookie,全局变量(少代码示例)
查看>>
grep -w 的解析_学习笔记
查看>>
量化交易之启航
查看>>
TX Text Control文字处理教程(3)打印操作
查看>>
CENTOS 7 如何修改IP地址为静态!
查看>>
MyCat分片算法学习(纯转)
查看>>
IO Foundation 3 -文件解析器 FileParser
查看>>
linux学习经验之谈
查看>>
mysqld_multi实现多主一从复制
查看>>
中介模式
查看>>