Array.prototype.slice.call(arguments,0); 上下调用模型
var fn9 = (function () {var arr = {}; //缓存对象var counter = function (arr) { //计算函数//args也就是fn9(1, 2, 3, 4, 5);的 参数var sum = 0;//求和for (var i = 0; i < arr.length; i++) {sum += arr[i];}console.log("counter",sum);return sum;//生成属性名}return function () {//其实本质就是arguments这个对象使用了数组的slice这个方法,得到了参数构成的数组var args = Array.prototype.slice.call(arguments,0); //arguments转换成数组// console.log(args,"ar");var key = args.join(","); //将args用逗号连接成字符串//1,2,3,4,5console.log(key);var result, tSum = arr[key];//对象名1,2,3,4,5: 得到对象名// console.log(arr[key]);// console.log(tSum);if (tSum) { //如果缓存中已存在 console.log('从缓存中取:', arr) //打印方便查看result = tSum;} else {//重新计算,并存入缓存同时赋值给resultresult = arr[key] = counter(args);// result的值来自counterconsole.log('存入缓存:', arr) //打印方便查看}return result;}})();console.log(fn9(1, 2, 3, 4, 5)); //return 15// fn9(1, 2, 3, 4, 5);// console.log( fn9(1, 2, 3, 4, 5, 6));// 21// fn9(1, 2, 3, 4, 5, 8);// fn9(1, 2, 3, 4, 5, 6);
Array.prototype.slice.call(arguments,0); 上下调用模型相关推荐
- js Array.prototype.slice.call(arguments,0) 理解
Array.prototype.slice.call(arguments,0) 经常会看到这段代码用来处理函数的参数 网上很多复制粘帖说:Array.prototype.slice.call(argu ...
- Array.prototype.slice.call(arguments)
Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与co ...
- Array.prototype.slice.apply(arguments)和[].slice.apply(arguments)解析
我们知道,函数内部 arguments 是一个类数组对象,不是真正的数组,因此也无法使用数组的各种方法.想详细了解 argument 对象可以前往函数中的 arguments. (function f ...
- 详解 Array.prototype.slice.call(arguments)
首先,slice有两个用法,一个是String.slice,一个是Array.slice,第一个返回的是字符串,第二个返回的是数组 在这里我们看第二个方法 1.在JS里Array是一个类 slice是 ...
- [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)
假如你是一个 JavaScript 开发者,你可能见到过 Array.prototype.slice.apply(arguments) 这样的用法,然后你会问,这么写是什么意思呢? 这个语法其实不难理 ...
- [转载]Array.prototype.slice.call(arguments,1)原理
Array.prototype.slice.call(arguments,1)该语句涉及两个知识点. arguments是一个关键字,代表当前参数,在javascript中虽然arguments表面上 ...
- Array.prototype.slice.call(arguments)对象转成数组
转成数组的通用函数 1 var toArray = function(s){ 2 try{ 3 return Array.prototype.slice.call(s); 4 } catch(e){ ...
- Array.prototype.slice.call()方法详解
在很多时候经常看到Array.prototype.slice.call()方法,比如Array.prototype.slice.call(arguments),下面讲一下其原理: 1.基本讲解 1.在 ...
- Array.prototype.slice.call
Array.prototype.slice.call(arguments,0)就类似于arguments.slice(0),但因为arguments不是真正的Array,所以它没有slice这个方法. ...
最新文章
- Beyond Compare比较Word文件的方法
- pc调试微信h5页面
- HDU - 3247 Resource Archiver(AC自动机+状压dp+bfs)
- Netweaver和CloudFoundry的log设置
- idea cloud bootstrap是啥_application.yml与bootstrap.yml的区别
- C语言课后习题(48)
- git commit –a时使用vim编辑提交信息
- Ubuntu16.04下配置laravel
- meta你到底了解多少
- day_log 12月份的
- 浏览器的id_亚马逊账号关联因素之浏览器是重中之重-亚马逊运营必知
- springboot 运行jar文件报 “XXX中没有主清单属性”
- easyx游戏编程:魔塔(c++语言开发)源码
- 如何使用思维导图做计划的6种模板类型
- Python | Python保存高维数组array,Python用pandas将numpy保存csv文件,Python保存3维数组
- 网络摄像头RTSP直播方案(三)
- 透彻理解SLAM中的非线性最小二乘问题
- 出租权不适用于计算机软件,TRIPS协议下我国软件产业知识产权保护问题研究
- 【区块链开发入门】(四) Truffle详解篇2
- [Fabric] 第11章 Fabric CA应用与配置