0

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 + ']';

硬编码,因此不会为每个调用计算。

我该怎么做呢?

4

2 回答 2

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;
  };

});
于 2013-04-09T22:51:31.280 回答
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;
    };
});
于 2013-04-09T22:51:44.730 回答