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 <thysul...@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@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to