30 lines
		
	
	
		
			831 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			831 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Haxe uses its own caching bind method.  It's faster, but less standard than Function.bind.
 | |
| // This version is slightly modified for compressability, modularization and readability.
 | |
| // https://github.com/HaxeFoundation/haxe/issues/1349
 | |
| // http://stackoverflow.com/a/17638540/1732990
 | |
| 
 | |
| Object.defineProperty(exports, "__esModule", {value: true});
 | |
| 
 | |
| var $fid = 0;
 | |
| 
 | |
| exports.default = function $bind(obj, method) {
 | |
|     var func, mId;
 | |
| 
 | |
|     if( method == null ) { return null; }
 | |
|     mId = method._i = method._i || $fid++;
 | |
| 
 | |
|     if( obj._c == null ) {
 | |
|         obj._c = {};
 | |
|     } else {
 | |
|         func = obj._c[mId];
 | |
|     }
 | |
|     if( func == null ) {
 | |
|         func = function(){
 | |
|             return func._m.apply(func._s, arguments);
 | |
|         };
 | |
|         func._s = obj;
 | |
|         func._m = method;
 | |
|         obj._c[mId] = func;
 | |
|     }
 | |
|     return func;
 | |
| }; |