Compare Revisions

Function.prototype.bind()

Revision 5000:

Revision 5000 by Fatbrain on

Revision 5001:

Revision 5001 by Fatbrain on

Title:
bind
bind
Slug:
JavaScript/Reference/Global_Objects/Function/bind
JavaScript/Reference/Global_Objects/Function/bind
Tags:
javascript, Functions, "JavaScript 1.8.5", ECMAScript5
javascript, Functions, "JavaScript 1.8.5", ECMAScript5
Content:

Revision 5000
Revision 5001
nn60      <div>
60      // Limitation: var B = A.bind(2), a = new A(3); a instanceo61        // Limitation: var B = A.bind(2), a = new A(3); a instanc
>f B ==&gt; false (should be true)>eof B ==&gt; false (should be true)
62      </div>
63      <div>
64        if (!Function.prototype.bind)
65      </div>
66      <div>
67        &nbsp;&nbsp; &nbsp;Function.prototype.bind = function(con
 >text /*, arg1, arg2... */) {
68      </div>
69      <div>
70        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;'use strict';
71      </div>
72      <div>
73        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (typeof this !== 'fun
 >ction') throw new TypeError();
74      </div>
75      <div>
76        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;var _arguments = Array.p
 >rototype.slice.call(arguments, 1),
77      </div>
78      <div>
79        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_this = th
 >is,
80      </div>
81      <div>
82        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_concat = 
 >Array.prototype.concat,
83      </div>
84      <div>
85        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_function 
 >= function() {
86      </div>
87      <div>
88        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &n
 >bsp;return _this.apply(this instanceof _dummy ? this : context,
89      </div>
90      <div>
91        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &n
 >bsp; &nbsp; &nbsp;_concat.apply(_arguments, arguments));
92      </div>
93      <div>
94        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},
95      </div>
96      <div>
97        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_dummy = f
 >unction() {};
98      </div>
99      <div>
100        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_dummy.prototype = _this
 >.prototype;
101      </div>
102      <div>
103        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_function.prototype = ne
 >w _dummy();
104      </div>
105      <div>
106        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return _function;
107      </div>
108      <div>
109        };
110      </div>
n62    <div>n
63      if (!Function.prototype.bind)
64    </div>
65    <div>
66      &nbsp;&nbsp; &nbsp;Function.prototype.bind = function(conte
>xt /*, arg1, arg2... */) { 
67    </div>
68    <div>
69      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;'use strict';
70    </div>
71    <div>
72      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (typeof this !== 'funct
>ion') throw new TypeError(); 
73    </div>
74    <div>
75      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;var _arguments = Array.pro
>totype.slice.call(arguments, 1), 
76    </div>
77    <div>
78      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_this = this
>, 
79    </div>
80    <div>
81      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_concat = Ar
>ray.prototype.concat, 
82    </div>
83    <div>
84      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_function = 
>function() { 
85    </div>
86    <div>
87      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbs
>p;return _this.apply(this instanceof _dummy ? this : context, 
88    </div>
89    <div>
90      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbs
>p; &nbsp; &nbsp;_concat.apply(_arguments, arguments)); 
91    </div>
92    <div>
93      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},
94    </div>
95    <div>
96      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_dummy = fun
>ction() {}; 
97    </div>
98    <div>
99      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_dummy.prototype = _this.p
>rototype; 
100    </div>
101    <div>
102      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_function.prototype = new 
>_dummy(); 
103    </div>
104    <div>
105      &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return _function;
106    </div>
107    <div>
108      };
109    </div>
t114      <li style="list-style: none">&lt;meta charset="utf-8"/&gt;Tt116      <li>The partial implementation, when used with the&nbsp;<co
>he partial implementation, when used with the&nbsp;<code style="c>de style="color: inherit; font-weight: inherit;">new</code>&nbsp;
>olor: inherit; font-weight: inherit;">new</code>&nbsp;operator do>operator does not work correctly with the&nbsp;<code style="color
>es not work correctly with the&nbsp;<code style="color: inherit; >: inherit; font-weight: inherit;"><a href="/en/JavaScript/Referen
>font-weight: inherit;"><a href="/en/JavaScript/Reference/Operator>ce/Operators/Special/instanceof" style="text-decoration: none; co
>s/Special/instanceof" style="text-decoration: none; color: rgb(4,>lor: rgb(4, 137, 183) !important; cursor: default;" title="en/Jav
> 137, 183) !important; cursor: default;" title="en/JavaScript/Ref>aScript/Reference/Operators/Special/instanceof">instanceof</a></c
>erence/Operators/Special/instanceof">instanceof</a></code><a href>ode><a href="/en/JavaScript/Reference/Operators/Special/instanceo
>="/en/JavaScript/Reference/Operators/Special/instanceof" style="t>f" style="text-decoration: none; color: rgb(4, 137, 183) !importa
>ext-decoration: none; color: rgb(4, 137, 183) !important; cursor:>nt; cursor: default;" title="en/JavaScript/Reference/Operators/Sp
> default;" title="en/JavaScript/Reference/Operators/Special/insta>ecial/instanceof">&nbsp;operator</a>. Instances created using the
>nceof">&nbsp;operator</a>. Instances created using the unbounded > unbounded constructor will not be an instance-of the bounded con
>constructor will not be an instance-of the bounded constructor.>structor.

Back to History