JavaScript的caller属性和callee属性对比总结 | GCidea's blog
目录1. 背景2. caller属性3. callee属性4. 说明
背景 要说这两个方法,必须先说另一个东西—实参对象(arguments)。标识符arguments是指向实参对象的引用。当传入某个函数的参数个数超过函数定义时指定的形参个数时,默认的处理方法是自动忽略多出来的参数。也就是说,默认这不会引起错误。但是这会有另一个问题:无法获取多出来的参数的引用了(无法知道多出来的参数具体值是什么)。这也正是实参对象arguments可以解决的问题。通过arguments和数字下标,我们就可以获取任意某个传入的参数了。之所以能够通过数字下标,是因为arguments是一个类数组对象,有着以数字为索引的一系列属性(至于什么是类数组对象,在JavaScript的call()、apply()、bind()方法对比总结这篇文章中提到过)。除了这些属性外,正如真正的数组一样,arguments还有一个length属性,用来标识传入参数的总个数。arguments的存在,极大提高了传参的灵活性,可以使得函数扩展性更好,可操作任意数量的参数。在ECMA-262, 3rd官方文档中,对于一个函数被调...阅读全文
背景 要说这两个方法,必须先说另一个东西—实参对象(arguments)。标识符arguments是指向实参对象的引用。当传入某个函数的参数个数超过函数定义时指定的形参个数时,默认的处理方法是自动忽略多出来的参数。也就是说,默认这不会引起错误。但是这会有另一个问题:无法获取多出来的参数的引用了(无法知道多出来的参数具体值是什么)。这也正是实参对象arguments可以解决的问题。通过arguments和数字下标,我们就可以获取任意某个传入的参数了。之所以能够通过数字下标,是因为arguments是一个类数组对象,有着以数字为索引的一系列属性(至于什么是类数组对象,在JavaScript的call()、apply()、bind()方法对比总结这篇文章中提到过)。除了这些属性外,正如真正的数组一样,arguments还有一个length属性,用来标识传入参数的总个数。arguments的存在,极大提高了传参的灵活性,可以使得函数扩展性更好,可操作任意数量的参数。在ECMA-262, 3rd官方文档中,对于一个函数被调...阅读全文