Как реализовать bind, call, apply?

Middle
199 просмотров
AFK Offer AI

Function.prototype.myBind = function(ctx, ...args) { const fn = this; return function(...newArgs) { return fn.apply(ctx, [...args, ...newArgs]); }; }. myCall: Function.prototype.myCall = function(ctx, ...args) { ctx = ctx || globalThis; const sym = Symbol(); ctx[sym] = this; const result = ctx[sym](...args); delete ctx[sym]; return result; }. apply аналогичен call, но принимает массив аргументов. bind возвращает новую функцию, call/apply вызывают сразу. Symbol нужен чтобы не конфликтовать с существующими свойствами.

Следующий вопрос

Когда useMemo приносит вред вместо пользы?