函数内部属性 :arguments、callee、caller、prototype 以及方法call和apply等。

arguments:arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。例如,如果一个函数传递了三个参数,你可以以如下方式引用他们:

arguments[0]
arguments[1]
arguments[2]

arguments.callee:
指向当前执行的函数。

【JavaScript高级程序设计】读书笔记-第4章function

arguments.caller :
指向调用当前函数的函数。

【JavaScript高级程序设计】读书笔记-第4章function
【JavaScript高级程序设计】读书笔记-第4章function

arguments.length:
指向传递给当前函数的参数数量。

arguments[@@iterator]:
返回一个新的Array迭代器对象,该对象包含参数中每个索引的值。

  • ## prototype

每个函数都包含两个非继承的方法call()和apply()

apply() 改变函数内部this的指向
methodName.apply(obj,args) 第一个参数是函数作用域(相当于调用者),第二个是参数数组。 这里相当于java的反射调用 method.invoke(obj,args)

改变了this的指向

【JavaScript高级程序设计】读书笔记-第4章function

call()

call() 与apply()类似,只是传参方式不同,call需要传多个参数,apply只需要传一个参数数组
【JavaScript高级程序设计】读书笔记-第4章function

相关文章: