浅谈argument 与 callee()

    在阅读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="调用" onclick="f(1,2)">
 
 

你可能感兴趣的:(java,工作)