Compare Revisions

Function.prototype.bind()

Change Revisions

Revision 5001:

Revision 5001 by Fatbrain on

Revision 5002:

Revision 5002 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 5001
Revision 5002
t55</pre>t
56    <div>
57      // PARTIAL WORKAROUND for Function.prototype.bind55// PARTIAL WORKAROUND for Function.prototype.bind
58    </div>
59    <div>
60      <div>
61        // Limitation: var B = A.bind(2), a = new A(3); a instanc56// Limitation: var B = A.bind(2), a = new A(3); a instanceof B ==
>eof B ==&gt; false (should be true)>&gt; false (should be true)
62      </div>
63      <div>
64        if (!Function.prototype.bind)57if (!Function.prototype.bind)
65      </div>
66      <div>
67        &nbsp;&nbsp; &nbsp;Function.prototype.bind = function(con58    Function.prototype.bind = function(context /*, arg1, arg2... 
>text /*, arg1, arg2... */) {>*/) {
68      </div>59        'use strict';
69      <div>
70        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;'use strict';
71      </div>
72      <div>
73        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (typeof this !== 'fun60        if (typeof this !== 'function') throw new TypeError();
>ction') throw new TypeError(); 
74      </div>
75      <div>
76        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;var _arguments = Array.p61        var _arguments = Array.prototype.slice.call(arguments, 1)
>rototype.slice.call(arguments, 1),>,
77      </div>62            _this = this,
78      <div>63            _concat = Array.prototype.concat,
79        &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_this = th64            _function = function() {
>is, 
80      </div>65                return _this.apply(this instanceof _dummy ? this 
 >: context,
81      <div>66                    _concat.apply(_arguments, arguments));
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        };67            },
110      </div>68            _dummy = function() {};
111    </div>69        _dummy.prototype = _this.prototype;
70        _function.prototype = new _dummy();
71        return _function;
72};
73</pre>

Back to History