underscorejs-invoke学习

时间:2023-02-25 12:39:23

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. HTML5 拖放(Drag 和 Drop)

    拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. <!DOCTYPE HTML> <html> <hea ...

  2. Keil&lowbar;uvision&lowbar;4基本使用教程

    Keil C51 V9.00 即09年发布的最新版本uVision 4,版本外观改变比较大,可以使用以前的注册文件.如果全新安装,在VISTA或者WIN 7系统下,请使用管理员方式运行,然后注册即可无 ...

  3. Android Studio新手全然指引

    Android Studio新手全然指引 @author ASCE1885的 Github 简书 微博 CSDN Android Studio的下载及安装 假设你的电脑能够FQ,那么请直接到Andro ...

  4. c&plus;&plus;中一个类所占用的空间

    看到阿里的一道笔试题: #pragma pack(2) class A { int i; union U { char buff[13]; int i; }u; void foo() { } type ...

  5. apk反编译方式

    一.Apk反编译得到Java源代码 下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具. apk反编译工具de ...

  6. 爬虫(九)scrapy框架简介和基础应用

    概要 scrapy框架介绍 环境安装 基础使用 一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能 ...

  7. android webview内存泄露解决方法

    完整的activity的onDestroy()方法:@Override protected void onDestroy() { if( mWebView!=null) { // 如果先调用destr ...

  8. DevOps:软件架构师行动指南(文摘)

    第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来

  9. &num;2017-2018-1 20155327 《信息安全系统设计基础》实现mypwd

    2017-2018-1 20155327 <信息安全系统设计基础>实现mypwd Linux pwd命令用于显示工作目录. 执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称. p ...

  10. jcrop的bug

    1 360(7.1.1.620,内核:31.0.1650.63)的极速模式下,出现裁剪框后,鼠标点击,页面就会滑动到底部. 查看了下源码,发现是下面的代码: function watchKeys() ...