<script type="text/javascript">
function check(args)
{
var actual = args.length;
var expected = args.callee.length;
document.write("actual:"+actual);
document.write("expected:" + expected);
if(actual!=expected)throw new Error("error!");
}
function f(x,y,z)
{
check(arguments);
return x+y+z;
}
document.write("</br>result:"+f(2,3,4));
</script>
问:代码中check()函数中的args.callee为什么不是指向check()函数
js中arguments.callee指向哪个函数,以及arguments参数传值问题。
答案:2 悬赏:80 手机版
解决时间 2021-04-13 20:48
- 提问者网友:我没有何以琛的痴心不悔
- 2021-04-13 04:00
最佳答案
- 五星知识达人网友:狂恋
- 2021-04-13 04:29
指向为函数f()
全部回答
- 1楼网友:动情书生
- 2021-04-13 04:55
这里的activexstring是只createxhr对象的一个属性,自定义的.
总的来说activexstring一般只会有2个类型的值,除非有在其他地方赋值...
这2个类型的值是null,和versions数组中的某一个
这个函数的作用就是创建一个异步请求的对象.
从函数开始
if(typeofxmlhttprequest!="undefined"){ 先判断了是否存在xmlhttprequest
如果有 就直接返回他创造的对象.
}else if(typeofactivexobject!="undefined"){ 然后判断了是否存在activexobject
如果存在,则创建他的对象,但这个对象需要一个传入参数,如下:
new activexobect(versions[i]); 需要versions数组中的某个项,数组的3个项分别对应3个版本.
从最高版本开始创建,如果创建失败,就被catch抓住,不处理,继续循环.
直到循环创建成功为止,然后给自己添加一个属性叫activexstring
arguments.callee.activexstring
arguments是javascript函数的内置对象,代表传入参数的集合
callee就代表对象本身即new createxhr()
如果3次循环完了都没找到,就会抛出
thrownewerror("noxhrobjectavailable.");
的错误.
其实你把
arguments.callee.activexstring
换成
this.activexstring
就容易理解了.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯