underscorejs-invoke学习
2016-01-31 08:31
465 查看
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
相关文章推荐
- chrome 控制台js调试与断点调试
- JavaScript设计模式与开发实践:分时函数
- JavaScript设计模式与开发实践:惰性函数
- 【JS】【笔记】JavaScript入门经典(第5版)第10章 JavaScript和cookie
- 【JS】【笔记】JavaScript入门经典(第5版)第9章 响应事件
- 【JS】【笔记】JavaScript入门经典(第5版)第8章 JSON
- 【JS】【笔记】JavaScript入门经典(第5版)第7章 面向对象编程
- 【JS】【笔记】JavaScript入门经典(第5版)第6章 脚本
- 【JS】【笔记】JavaScript入门经典(第5版)第5章 数据类型
- #学习笔记#(30)牛客网JS测试题1~20题
- 【JS】【笔记】JavaScript入门经典(第5版)第4章 DOM对象和内置对象
- 【JS】【笔记】JavaScript入门经典(第5版)第3章 函数
- JavaScript中eval函数的问题
- javascript嵌套函数和在函数内调用外部函数的区别分析
- Servlet生命周期与工作原理
- 原生javascript ajax提交
- js(Extjs6.0 ) 构建二维数组,用于显示到highchart柱状图中。
- <a>标签中href="javascript:;"表示什么意思??
- 如何使用javascript向服务器提交数据(post)
- 【JS】【笔记】JavaScript入门经典(第5版)第2章 简单的脚本