以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
139. 实现_.partial()

实现思路:

  1. partial()函数接收任意数量的参数,第一个参数是要调用的函数,其余参数是要应用到该函数的参数。
  2. 返回一个新的函数,该函数接收任意数量的参数。在调用时,新函数将传递之前传递给partial()的参数和新传递的参数。对于placeholder,我们可以将其替换为新函数的参数。
  3. 可以使用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]