Bind function without thisArg

Ranando King kingmph at gmail.com
Mon Jan 14 06:01:35 UTC 2019


Bind is just a wrapper function provided by the engine. You can always
create your own:

```js
function myBind(fn, ...args) {
  let retval = Object.defineProperties(function(...a) {
    console.assert(typeof(fn) == "function");
    return fn(...args, ...a)
  }, {
    name: {
      configurable: true,
      value: fn.name
    },
    length: {
      configurable: true,
      value: fn.length
    },
    prototype: {
      configurable: true,
      writable: true,
      value: fn.prototype
    }
  });
}
```

This should apply your bound arguments before any arguments supplied by the
caller without affecting the context object.

On Sun, Jan 13, 2019 at 11:39 PM Sultan <thysultan at gmail.com> wrote:

> Consider the following example:
>
> var foo = (function(a) { console.assert(this === obj) }).bind(undefined, 1)
> var obj = {foo: foo}
>
> Calling foo from obj:
>
> obj.foo(1)
>
> Would result in an assertion. How does one go about preserving the this
> reference of the caller. That is i want to use .bind to only bind
> "arguments" and not "thisArg".
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20190114/08ed9df5/attachment-0001.html>


More information about the es-discuss mailing list