The use case was to use bind to avoid closures such that "foo" is attached
to an object on demand.
var obj = {}
// some place else
obj.foo = fn.bind(, 1, 2, 3)
Where the function "fn" relies on this being the "obj" it is attached to,
this considering that calling a bound functions with:
fn.call(thisArg)
Doesn't change the thisArg.
On Mon, Jan 14, 2019 at 9:27 AM Jordan Harband <[email protected]> wrote:
> ```
> var foo = function(a) { console.assert(this === obj) };
> var obj = { foo() { return foo.apply(this, arguments); } };
> ```
> ?
>
> On Sun, Jan 13, 2019 at 10:01 PM Ranando King <[email protected]> wrote:
>
>> 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 <[email protected]> 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
>>> [email protected]
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss