| 'use strict'; | 
| var uncurryThis = require('../internals/function-uncurry-this-clause'); | 
| var aCallable = require('../internals/a-callable'); | 
| var NATIVE_BIND = require('../internals/function-bind-native'); | 
|   | 
| var bind = uncurryThis(uncurryThis.bind); | 
|   | 
| // optional / simple context binding | 
| module.exports = function (fn, that) { | 
|   aCallable(fn); | 
|   return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { | 
|     return fn.apply(that, arguments); | 
|   }; | 
| }; |