函数属性和arguments
◼ 我们知道JavaScript中函数也是一个对象,那么对象中就可以有属性和方法。
◼ 属性name:一个函数的名词我们可以通过name来访问;
◼ 属性length:属性length用于返回函数参数的个数;注意:rest参数是不参与参数的个数的;
认识arguments
◼ arguments 是一个 对应于传递给函数的参数的类数组(array-like)对象。
◼ array-like意味着它不是一个数组类型,而是一个对象类型:但是它却拥有数组的一些特性,比如说length,比如可以通过index索引来访问;但是它却没有数组的一些方法,比如filter、map等;
// arguments 类数组对象console.log(arguments)// 可以通过索引获取内容console.log(arguments[0])console.log(arguments[1])// 遍历for (var arg of arguments) {console.log(arg)}
arguments转Array
◼ 在开发中,我们经常需要将arguments转成Array,以便使用数组的一些特性。常见的转化方式如下◼ 转化方式一:遍历arguments,添加到一个新数组中;将arguments转为数组方式一:// var newArguments = []// for (var arg of arguments){// newArguments.push(arg)// }◼ 转化方式二:较难理解(有点绕),了解即可调用数组slice函数的call方法;var newArgs = [].slice.apply(arguments)console.log(newArgs)◼ 转化方式三:ES6中的两个方法Array.from[…arguments]var newArguments = Array.from(arguments)console.log(newArguments)// 遍历之后拿到每个元素放到数组里var newArgs2 = [...arguments]