__bind helper: caching ctor

This commit is contained in:
Michael Ficarra
2011-05-27 18:41:31 -04:00
parent 6a40807330
commit 9cbf2a82ec
2 changed files with 14 additions and 14 deletions

View File

@@ -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'

View File

@@ -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;
};