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学习的更多相关文章

  1. 不学就吃亏的underscorejs类库学习示例 ——(集合篇)

    underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...

  2. C#之Invoke学习

    C#中invoke和beginInvoke的使用 1.Control类中的invoke和beginInvoke的定义 invoke的含义是:在拥有此控件的基础窗口句柄的现呈上同步执行指定的委托(同步) ...

  3. .NET学习之路----我对P/Invoke技术的理解(一)

    看了P/Invoke技术的介绍,于是想写下点东西,东西包含两个部分:知识的纪录和我的理解及疑问. r托管代码中调用非托管API函数的过程 1.定位包含API的DLL: 2.载入DLL 3.找到DLL中 ...

  4. C#学习之在辅助线程中修改UI控件----invoke方法

    Invoke and BeginInvoke 转载地址:http://www.cnblogs.com/worldreason/archive/2008/06/09/1216127.html 在Invo ...

  5. 学习AOP之认识一下Spring AOP

    心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...

  6. Java学习之反射机制及应用场景

    前言: 最近公司正在进行业务组件化进程,其中的路由实现用到了Java的反射机制,既然用到了就想着好好学习总结一下,其实无论是之前的EventBus 2.x版本还是Retrofit.早期的View注解框 ...

  7. Linux学习之探索文件系统

    Linux,一起学习进步-    ls With it, we can see directory contents and determine a variety of important file ...

  8. Linux.NET学习手记(8)

    上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这 ...

  9. WCF学习之旅—HTTP双工模式(二十)

    WCF学习之旅—请求与答复模式和单向模式(十九) 四.HTTP双工模式 双工模式建立在上文所实现的两种模式的基础之上,实现客户端与服务端相互调用:前面介绍的两种方法只是在客户端调用服务端的方法,然后服 ...

  10. Java学习之注解Annotation实现原理

    前言: 最近学习了EventBus.BufferKinfe.GreenDao.Retrofit 等优秀开源框架,它们新版本无一另外的都使用到了注解的方式,我们使用在使用的时候也尝到不少好处,基于这种想 ...

随机推荐

  1. wpa_cli与wpa_supplicant的交互命令

    1)通过adb命令行,可以直接打开supplicant,从而运行wpa_cli,可以解决客户没有显示屏而无法操作WIFI的问题,还可以避免UI的问题带到driver.进一步来说,可以用在很多没有键盘输 ...

  2. 转载:c++ sort用法

    sort函数使用模板: sort包含在头文件algorithm中 sort(start,end,排序方法) 1.在没有排序方法时是默认从小到大的排列,例 #include<iostream> ...

  3. wait和waitpid的使用和区别

    昨天看到一则新闻,讲的是一个游戏开发大拿猝死去世的新闻,公司发了讣告,打算接下去给他爸爸妈妈每个月10000的赡养费,很是感慨,本来中国的游戏业和国外就差距大,天妒英才啊.真心想对那些游戏公司的领导说 ...

  4. word 2010中如何创建多级目录和多级列表

    原文地址:http://wenku.baidu.com/link?url=KkSmYTqogxA5VJkLCGb957E5fIGN5S50FUx7IpAWWWKWWRYvaeGl2IvX-dFP25r ...

  5. mac下的改装人生——第一次拆卸mbp,加入内存

    这是我第一次拆我的mbp哈,心情无比激动. 在家门口电脑维修店的老板那里借来了螺丝刀.回家以后立刻开始了改装行动 我的MC700后盖是可以全部打开的,总共大概是10个螺丝的样子,上面靠右边的三颗是长螺 ...

  6. [Audio processing] 常见语音特征 —— LPC

    共振峰产生的原理及其在音质上的体现,共振峰的分布位置是建立在声音产生媒介的共鸣物理结构基础上的(Resonant Physical Structure).   无论是人声还是乐器,它们的声音特性都源自 ...

  7. poj3469 最小割构图

    题目链接:http://poj.org/problem?id=3469 #include <cstdio> #include <cmath> #include <algo ...

  8. Java 热部署深入探索

    简介 在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作.对于某些大型的 ...

  9. zznu 1068: 进制转换

    进制应该属于程序员的看家本事了,也是大家水平告别菜鸟的一个转折,所以进制转换题目是很有意义的, 这个题目是最简单的把二进制数化简成十进制,因为输入有可能有31位,所以无法使用int或者long lon ...

  10. getting start with storm 翻译 第八章 part-1

    转载请注明出处:http://blog.csdn.net/lonelytrooper/article/details/12434915 第八章 事务性Topologies 在Storm中,正如本书前边 ...