以下为ChatGPT自动生成的解答,正确与否请自行判断。
BFE.devAI解答 - JavaScript 代码题
139. 实现_.partial()
实现思路:
- partial()函数接收任意数量的参数,第一个参数是要调用的函数,其余参数是要应用到该函数的参数。
- 返回一个新的函数,该函数接收任意数量的参数。在调用时,新函数将传递之前传递给
partial()
的参数和新传递的参数。对于placeholder,我们可以将其替换为新函数的参数。 - 可以使用bind()来绑定之前传递给
partial()
的参数,并返回一个新函数。然后在新函数中连接之前传递的参数和新函数的参数。
参考实现如下:
partial.placeholder = Symbol();
function partial(fn, ...args) {
return function(...newArgs) {
const combinedArgs = args.map(arg => arg === partial.placeholder ? newArgs.shift() : arg).concat(newArgs);
return fn.apply(this, combinedArgs);
}
}
测试代码如下:
const func = (...args) => args;
// 没有placeholder
const func123 = partial(func, 1, 2, 3);
console.log(func123(4)); // [1,2,3,4]
// 使用placeholder
const _ = partial.placeholder;
const func1_3 = partial(func, 1, _, 3);
console.log(func1_3(2, 4)); // [1,2,3,4]