Bump to v3.0.0.

This commit is contained in:
John-David Dalton
2015-01-10 12:55:03 -08:00
committed by jdalton
commit 5379c1996b
350 changed files with 12910 additions and 0 deletions

38
internal/isBindable.js Normal file
View File

@@ -0,0 +1,38 @@
import baseSetData from './baseSetData';
import isNative from '../lang/isNative';
import support from '../support';
/** Used to detect named functions. */
var reFuncName = /^\s*function[ \n\r\t]+\w/;
/** Used to detect functions containing a `this` reference. */
var reThis = /\bthis\b/;
/** Used to resolve the decompiled source of functions. */
var fnToString = Function.prototype.toString;
/**
* Checks if `func` is eligible for `this` binding.
*
* @private
* @param {Function} func The function to check.
* @returns {boolean} Returns `true` if `func` is eligible, else `false`.
*/
function isBindable(func) {
var result = !(support.funcNames ? func.name : support.funcDecomp);
if (!result) {
var source = fnToString.call(func);
if (!support.funcNames) {
result = !reFuncName.test(source);
}
if (!result) {
// Check if `func` references the `this` keyword and store the result.
result = reThis.test(source) || isNative(func);
baseSetData(func, result);
}
}
return result;
}
export default isBindable;