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

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

硬编码,以便不会针对每次调用进行计算。

我该怎么做?

最佳答案

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

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

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

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

});

关于javascript - 性能 - 在初始化时完成字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913888/

相关文章:

javascript - 在node/javascript/underscore中过滤大型数据集

javascript - Bootstrap Jquery <li> 点击添加图标到列表

javascript - Passport-Facebook 身份验证窗口未弹出,用户仍添加

javascript - jQuery : Changing the last div's content id without reflecting changes to previous one

javascript - 参数无法访问 - [ts] 找不到名称 'product'

javascript - 检查对象是否为空且具有未定义的属性

javascript - 谷歌地图 api infowindow 内容类不触发 jquery

Javascript/Coffeescript 使用函数哈希作为参数

javascript - 按属性名称数组过滤对象

javascript - Backbone : managing templates