性能 - 在初始化时完成字符串连接

时间:2013-04-09 22:47:15

标签: javascript underscore.js

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

硬编码,以便不为每次通话计算。

我该怎么做?

2 个答案:

答案 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;
    };
});