2023-10-03 11:14:36 +08:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var assert = require('assert');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A empty function.
|
|
|
|
*
|
|
|
|
* @return {Function}
|
|
|
|
* @public
|
|
|
|
*/
|
|
|
|
exports.noop = function noop() {};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get a function parameter's names.
|
|
|
|
*
|
|
|
|
* @param {Function} func
|
|
|
|
* @param {Boolean} [useCache], default is true
|
|
|
|
* @return {Array} names
|
|
|
|
*/
|
|
|
|
exports.getParamNames = function getParamNames(func, cache) {
|
|
|
|
var type = typeof func;
|
|
|
|
assert(type === 'function', 'The "func" must be a function. Received type "' + type + '"');
|
|
|
|
|
|
|
|
cache = cache !== false;
|
|
|
|
if (cache && func.__cache_names) {
|
|
|
|
return func.__cache_names;
|
|
|
|
}
|
|
|
|
var str = func.toString();
|
|
|
|
var names = str.slice(str.indexOf('(') + 1, str.indexOf(')')).match(/([^\s,]+)/g) || [];
|
|
|
|
func.__cache_names = names;
|
|
|
|
return names;
|
|
|
|
};
|