📜  Underscore.js _.wrap()函数(1)

📅  最后修改于: 2023-12-03 15:35:28.187000             🧑  作者: Mango

Underscore.js _.wrap()函数

Underscore.js是一个JavaScript实用程序库,提供了许多有用的函数和工具,方便开发者通过函数式编程风格编写JavaScript代码。其中,_.wrap()函数是其中一个常用的函数。

函数作用

_.wrap()函数的作用是将一个函数包装在另一个函数中,返回一个新的函数,新函数在调用时会自动调用原函数,并根据需要传递参数。这个新函数可以在原始函数前或后执行其他操作,以扩展其功能。

函数语法
_.wrap(function, wrapper)

参数解释:

  • function: 要被包装的函数。
  • wrapper: 用来包装函数的函数。

返回值:

  • 返回一个新函数。
函数示例

以下代码为包装一个函数,让它在调用时自动把参数转化为数字类型:

// "parseNumber" 函数用于将输入转化为数字类型
function parseNumber(val) {
  return parseInt(val, 10);
}

// 用 "wrapper" 函数包装原函数
var wrappedParseNumber = _.wrap(parseNumber, function(func) {
  return function(val) {
    return isNaN(val) ? 0 : func(val);
  };
});

console.log(wrappedParseNumber("hello")); // => 0
console.log(wrappedParseNumber("42")); // => 42

上方代码通过将"parseNumber"函数包装在"wrapper"函数中,重定义了其行为,使其在验证输入参数后从不返回"NaN"。其中的wrapper函数通过闭包保存了参数"func",并返回一个新函数,新函数在调用时首先验证输入是否为有效数字,然后再调用原函数(通过"func"参数),并返回原函数的返回值。

函数注意事项
  • 使用_.wrap()函数可以轻松地包装现有函数,以便在运行时提供新的功能。
  • 函数的wrapper参数应该是一个高阶函数,它接受原始函数并返回一个新函数,以实现新功能。
  • 返回的新函数将接收与原始函数相同的参数,并且可以在调用原始函数之前或之后执行其他操作。