mirror of
https://github.com/jashkenas/coffeescript.git
synced 2026-01-14 17:27:59 -05:00
__bind helper: caching ctor
This commit is contained in:
22
lib/nodes.js
22
lib/nodes.js
@@ -7,16 +7,16 @@
|
||||
child.prototype = new ctor;
|
||||
child.__super__ = parent.prototype;
|
||||
return child;
|
||||
}, __bind = (Function.prototype.bind ? Function.prototype.call.bind(Function.prototype.bind) : function(fn, me){
|
||||
return function bound(){
|
||||
if (!(this instanceof bound))
|
||||
return fn.apply(me, arguments);
|
||||
var ctor = function(){};
|
||||
ctor.prototype = fn.prototype;
|
||||
var obj = new ctor();
|
||||
fn.apply(obj, arguments);
|
||||
return obj;
|
||||
};
|
||||
}, __bind = (Function.prototype.bind ? Function.prototype.call.bind(Function.prototype.bind) : function(fn, me){
|
||||
var ctor = function(){};
|
||||
ctor.prototype = fn.prototype;
|
||||
return function bound(){
|
||||
if (!(this instanceof bound))
|
||||
return fn.apply(me, arguments);
|
||||
var obj = new ctor;
|
||||
fn.apply(obj, arguments);
|
||||
return obj;
|
||||
};
|
||||
}), __indexOf = Array.prototype.indexOf || function(item) {
|
||||
for (var i = 0, l = this.length; i < l; i++) {
|
||||
if (this[i] === item) return i;
|
||||
@@ -2258,7 +2258,7 @@
|
||||
};
|
||||
UTILITIES = {
|
||||
"extends": 'function(child, parent) {\n for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor;\n child.__super__ = parent.prototype;\n return child;\n}',
|
||||
bind: ' (Function.prototype.bind ? Function.prototype.call.bind(Function.prototype.bind) : function(fn, me){\n return function bound(){\n if (!(this instanceof bound))\n return fn.apply(me, arguments);\n var ctor = function(){};\n ctor.prototype = fn.prototype;\n var obj = new ctor();\n fn.apply(obj, arguments);\n return obj;\n };\n})',
|
||||
bind: '(Function.prototype.bind ? Function.prototype.call.bind(Function.prototype.bind) : function(fn, me){\n var ctor = function(){};\n ctor.prototype = fn.prototype;\n return function bound(){\n if (!(this instanceof bound))\n return fn.apply(me, arguments);\n var obj = new ctor;\n fn.apply(obj, arguments);\n return obj;\n };\n})',
|
||||
indexOf: 'Array.prototype.indexOf || function(item) {\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === item) return i;\n }\n return -1;\n}',
|
||||
hasProp: 'Object.prototype.hasOwnProperty',
|
||||
slice: 'Array.prototype.slice'
|
||||
|
||||
@@ -1770,12 +1770,12 @@ UTILITIES =
|
||||
# Create a function bound to the current value of "this".
|
||||
bind: '''
|
||||
(Function.prototype.bind ? Function.prototype.call.bind(Function.prototype.bind) : function(fn, me){
|
||||
var ctor = function(){};
|
||||
ctor.prototype = fn.prototype;
|
||||
return function bound(){
|
||||
if (!(this instanceof bound))
|
||||
return fn.apply(me, arguments);
|
||||
var ctor = function(){};
|
||||
ctor.prototype = fn.prototype;
|
||||
var obj = new ctor();
|
||||
var obj = new ctor;
|
||||
fn.apply(obj, arguments);
|
||||
return obj;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user