0

看看这段代码:

var args;
function foo(){
  args = arguments;
}

foo();

console.log(args); // []
args.callee(); // foo

为什么我无法在控制台中看到参数对象的任何属性或方法却能够调用被调用方方法?

4

2 回答 2

4

您没有传递foo任何参数。此外,该callee属性是“不可枚举的”。

于 2012-08-09T14:46:33.493 回答
3

免责声明:这假设您使用的是 Chrome 或 Firebug 控制台,没有标准,因此自定义控制台可能会做一些时髦的事情。

因为您使用console.log了与“普通”对象不同的显示类似数组的对象。如果要查看对象的属性,请使用console.dir.

* 要像数组一样,对象必须具有length属性和splice功能,或许多其他利基条件。

于 2012-08-09T14:46:39.547 回答