• 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
    
  • 相关阅读:
    张艾迪:全面开放“A"计划
    张艾迪(创始人):我们是激情与开放的世界
    张艾迪(创始人):由产品集合到创新的引领
    张艾迪(创始人):Be.Time+Cr.Idear的创新理念
    张艾迪(创始人): 整合全新的UIW.AD概念
    张艾迪(创始人): 整合全新的UIW.AD概念模式
    腾讯会员免费领取试用免费腾讯视频vip共享
    golang二进制bit位的常用操作
    golang ntp协议客户端
    imagecreatefrombmp、imagebmp php处理bmp文件
  • 原文地址:https://www.cnblogs.com/kyo4311/p/5172827.html
Copyright © 2020-2023  润新知