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 に答える