在阅读JavaScript权威指南时遇到了 Aragument对象,对其中的argument 与argument.callee()有点困惑,后来
研究后总算理解了,我是如下理解的,如有不同,欢迎留言:
argument 即 调用对象(这是书本翻译的)
一开始还不是很明白,后来通过后面的argument.callee()印证,总算搞清楚了,
调用对象,就是调用这个方法的对象(这也许就译文比原文差的地方了,要是英语水平好,还是看原文的好),
这个与Java的super调用有点相似;
argument.callee() 即 当前对象
(实际上是返回当前执行的函数对象,我们这里可以用“当前对象”去理解) 与Java的this 相似;
argument 与argument.callee() 跟 super & this 对比学习就很容易明白了,
我想设计argument 与argument.callee()初衷就是为了能进行两个对象互相引用吧
下面是书本里的代码,好好揣摩一下就明白了
<script type="text/javascript"> function check(args){ var ac = args.length; var ex = args.callee.length document.write("ac:" + ac +'<br>'); document.write("ex:" + ex +'<br>'); if(ac != ex){ document.write("Wrong number of arguments: expected: " + ex + "; actually passed" + ac +'<br>'); } } function f(x, y, z){ check(arguments); document.write(x + y + z); } </script>
在调用方法时,我故意少传了一个参数,大家运行一下,仔细看看 ac 与 ex的区别
<input name="wr" type="button" value="调用" οnclick="f(1,2)">