underscorejs-invoke学习
2.13 invoke
2.13.1 语法:
_.invoke(list, method, *args)
2.13.2 说明:
每个list属性值都执行method方法,根据method方法返回一个数组。
- list可以为数组,对象,字符串和arguments
- method是一个方法,可为方法名,也可为自定义方法
- *args是无穷个参数(下面会详细做讲解)
2.13.3 代码示例:
示例一:invoke会根据不同的method方法对list做出不同的处理(将对list, method同时做出示例)
var result;
// 操作数组(对数组中的每个数组执行join方法把数组中的所有元素放入一个字符串)
result = _.invoke([[5, 1, 7], [3, 2, 1]], 'join');
console.log(result); //=> ["5,1,7", "3,2,1"]
// 操作对象(对象的每个属性值执行toFixed方法保留两位小数点)
result = _.invoke({x: 11.111, y: 22.2}, 'toFixed', 2);
console.log(result); //=> ["11.11", "22.20"]
// 操作字符串(将字符串分解为一个数组,对这个数组中的每个值执行toUpperCase方法)
result = _.invoke('abc', 'toUpperCase');
console.log(result); //=> ["A", "B", "C"]
//操作arguments
function abc() {
result = _.invoke(arguments, 'toFixed', 1);
console.log(result); //=> ["1.0", "2.0", "3.0"]
}
abc(1, 2, 3);
示例二:method方法
var result;
// method也可直接传递方法
result = _.invoke([[5, 1, 7], [3, 2, 1]], Array.prototype.join);
console.log(result); //=>["5,1,7", "3,2,1"]
// 自定义method方法(需要有返回值)
result = _.invoke([1, 2, 3], function (a) {
return a + this; // this是每个属性值
}, 3);
console.log(result); //=> [4, 5, 6]
示例三:args是无穷个参数(根据示例一中的例子,相信你已经知道args的作用了,示例一中的例子中只是传了一个参数,那如何传两个、三个、甚至更多参数呢?);请看下面的例子。
// 截取数组中的每个字符串位置从2开始4结束
var result = _.invoke(['abcde', '123456'], 'slice', 2, 4);
console.log(result); //=> ["cd", "34"]
2.13.4 method方法为空、非方法、没有返回值会返回什么呢?
var result;
// method为空
result = _.invoke([1, 2, 3]);
console.log(result); //=> [undefined, undefined, undefined]
// method非方法
result = _.invoke([1, 2, 3], null);
console.log(result); //=> [undefined, undefined, undefined]
// method没有返回值
result = _.invoke([1, 2, 3], function (){ });
console.log(result); //=> [undefined, undefined, undefined]
2.13.5 参数传递错误:
示例一:method非方法而是一个字符
var result = _.invoke([{ a: 1 }], 'a');
console.log(result); //=> Uncaught TypeError: func.apply is not a function
underscorejs-invoke学习的更多相关文章
- 不学就吃亏的underscorejs类库学习示例 ——(集合篇)
underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...
- C#之Invoke学习
C#中invoke和beginInvoke的使用 1.Control类中的invoke和beginInvoke的定义 invoke的含义是:在拥有此控件的基础窗口句柄的现呈上同步执行指定的委托(同步) ...
- .NET学习之路----我对P/Invoke技术的理解(一)
看了P/Invoke技术的介绍,于是想写下点东西,东西包含两个部分:知识的纪录和我的理解及疑问. r托管代码中调用非托管API函数的过程 1.定位包含API的DLL: 2.载入DLL 3.找到DLL中 ...
- C#学习之在辅助线程中修改UI控件----invoke方法
Invoke and BeginInvoke 转载地址:http://www.cnblogs.com/worldreason/archive/2008/06/09/1216127.html 在Invo ...
- 学习AOP之认识一下Spring AOP
心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...
- Java学习之反射机制及应用场景
前言: 最近公司正在进行业务组件化进程,其中的路由实现用到了Java的反射机制,既然用到了就想着好好学习总结一下,其实无论是之前的EventBus 2.x版本还是Retrofit.早期的View注解框 ...
- Linux学习之探索文件系统
Linux,一起学习进步- ls With it, we can see directory contents and determine a variety of important file ...
- Linux.NET学习手记(8)
上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这 ...
- WCF学习之旅—HTTP双工模式(二十)
WCF学习之旅—请求与答复模式和单向模式(十九) 四.HTTP双工模式 双工模式建立在上文所实现的两种模式的基础之上,实现客户端与服务端相互调用:前面介绍的两种方法只是在客户端调用服务端的方法,然后服 ...
- Java学习之注解Annotation实现原理
前言: 最近学习了EventBus.BufferKinfe.GreenDao.Retrofit 等优秀开源框架,它们新版本无一另外的都使用到了注解的方式,我们使用在使用的时候也尝到不少好处,基于这种想 ...
随机推荐
- BZOJ1726: [Usaco2006 Nov]Roadblocks第二短路
1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 768 Solved: 369[S ...
- HDU 2255 奔小康赚大钱
题目分析:这个是个KM的模板题. #include<stdio.h> #include<string.h> #include<algorithm> #include ...
- 使用eclipse搭建嵌入式开发环境
下载jdk http://download.oracle.com/otn-pub/java/jdk/7u4-b20/jdk-7u4-linux-i586.tar.gz 下载eclipse-cpp-ga ...
- IIS的安装与配置
IIS的安装与配置 5.1.1. IIS安装视频教程 5.1.2. IIS配置与建站设置视频教程 IIS是什么 IIS是Internet Information Services(Internet信息 ...
- HDOJ(HDU) 2192 MagicBuilding(用Java的Map做了下)
Problem Description As the increase of population, the living space for people is becoming smaller a ...
- SCU 4440 Rectangle 2015年四川省赛题
题目链接:http://acm.scu.edu.cn/soj/problem/4440/ 题目大意:给一个n*m的方格,求周长小于等于k的矩形有多少个. 解题思路:我之前直接暴力,显然超时,所以后来发 ...
- UVa11419 SAM I AM(构造最小点覆盖)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27475 [思路] 二分图的最小点覆盖以及构造最小覆盖. 二分图的最 ...
- [Sequence Alignment Methods] Smith–Waterman algorithm
Smith–Waterman algorithm 首先需要澄清一个事实,Smith–Waterman algorithm是求两个序列的最佳subsequence匹配,与之对应的算法但是求两个序列整体匹 ...
- poj3258
题目翻译 二分法(其实两个单词的意思分别是河,跳格子游戏,至于为啥翻译成二分法- -只能说英语博大精深啊) 奶牛每年举办一场有特色的跳格子游戏(很明显题目翻译错误)涉及到在河里从一块岩石跳到另一块岩石 ...
- poj 1458 Common Subsequence【LCS】
Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43132 Accepted: 17 ...