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

Javascript 性能-在初始化时完成字符串连接,javascript,underscore.js,Javascript,Underscore.js,Underline.js做了一件很酷的事情。这是他们修改过的代码 NS.as(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { NS['is' + name] = function(obj) { return toString.call(obj) == '[object ' + name + ']'; }; }); 这些函数是在第一次通过时创建的,之

Underline.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 + ']';
硬编码,因此不会为每次呼叫计算


如何执行此操作?

您可以在创建函数之前创建字符串,并将其放入局部变量中。由于它是函数中的局部变量,每次迭代都有自己的值:

NS.as(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {

  var objName = '[object ' + name + ']';

  NS['is' + name] = function(obj) {
    return toString.call(obj) == objName;
  };

});

可以在创建函数之前创建字符串,并将其放入局部变量中。由于它是函数中的局部变量,每次迭代都有自己的值:

NS.as(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {

  var objName = '[object ' + name + ']';

  NS['is' + name] = function(obj) {
    return toString.call(obj) == objName;
  };

});

... 你知道为什么原作者不会这么做吗。。。它非常简单,并保存了两个字符串连接。。。它们都很慢。。。这里有一个更复杂的问题,涉及相同的。。。你知道为什么原作者不会这么做吗。。。它非常简单,并保存了两个字符串连接。。。它们都很慢。。。这里有一个更复杂的问题涉及到同样的。。。