Underscore.js做的很酷。这是他们的代码修改。
NS.as(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
NS['is' + name] = function(obj) {
return toString.call(obj) == '[object ' + name + ']';
};
});
这些功能是在第一次通过时创建的,然后供开发人员使用。
NS.isFunction()
NS.isString(),
etc.
但是,我想要这个值
'[object ' + name + ']';
硬编码,以便不为每次通话计算。
我该怎么做?
答案 0 :(得分:2)
您可以在创建函数之前创建字符串,并将其放在局部变量中。因为它是函数中的局部变量,所以每次迭代都有自己的值:
NS.as(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
var objName = '[object ' + name + ']';
NS['is' + name] = function(obj) {
return toString.call(obj) == objName;
};
});
答案 1 :(得分:1)
NS.as(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
var typeId = '[object ' + name + ']';
NS['is' + name] = function(obj) {
return toString.call(obj) == typeId;
};
});