JavaScript 对象属性作实参以及实参对象的callee属性
16lz
2021-01-22
参考自<<JavaScript权威指南 第6版>>
/* * 将对象属性用作实参, 从而不必记住参数的顺序. */ function arraycopy(from,from_start,to,to_start,length){ for(var i=from_start,j=to_start;i<from_start+length;++i,++j){ to[j] = from[i]; } } function easycopy(args){ arraycopy(args.from, args.from_start || 0, //default param args.to, args.to_start || 0, args.length); } var a = [1,2,3,4],b = []; easycopy({from:a,to:b,length:4}); console.log(b); // [ 1, 2, 3, 4 ] /* * arguments对象有 callee 和 caller属性, 在非严格模式下, * callee: 指代当前正在执行的函数, 非标准的属性,但是大多数浏览器都已经实现了. 在匿名函数的递归调用中很有用. * caller: 可以访问调用栈 */ var fact = function(x){ if(x <= 1) return 1; return x * arguments.callee(x-1); } // 这样也是可以的 var fact2 = function(x){ if(x <= 1) return 1; return x * fact2(x-1); } console.log(fact(5)); // 120 console.log(fact2(5)); // 120 /* 代码自文档化, 因为js没有参数类型, 所以最好加参数注释或者取有意义的名字,如下: * number表示参数是数字类型的 * ... 表示数量不限. */ function max(/*number...*/){};
更多相关文章
- JavaScript:使用函数参数检索javascript对象键
- Js中获取超链接里面传递的参数值
- 如何使用AngularJS获取url参数
- 使用jackson json将属性添加到json字符串
- React组件的属性PropTypes
- js 处理url中文参数 java端接收处理
- Javascript XML DOM将属性设置为特定元素
- 为什么我收到此错误:“未捕获的TypeError:无法读取未定义的属性'标
- AngularJs location.path没有传递参数