1

プロトタイプとして使用できるように、node.js util.format関数を作成/拡張しようとしています (例: "Hello %s".format("World"))。しかし、私はそれを試してもうまくいきませんでした。次の形式を試してみましたが、役に立ちませんでした。

String.prototype.format = function(){return util.format(this, arguments)};

String.prototype.format = function(){return util.format.apply(this, arguments)};

そしてまた

String.prototype.format = function(args){return util.format(this, args)};

これらのどれも機能しません。私が間違っていることを知っていますか?

ありがとう、マヌエル

4

1 に答える 1

6

このように呼ぶと思いますか?

"%s: %s".format('key', 'val');

このような:

String.prototype.format = function(){
  var args = Array.prototype.slice.call(arguments);
  args.unshift(this.valueOf());
  return util.format.apply(util, args);
};

最初の例では、書式文字列と引数オブジェクトの 2 つの引数のみを渡しています。2 回目の試行で近づくことができますが、format のコンテキストはおそらくutil. thisに適用される引数のセットに追加する必要がありますformat。またthis、文字列を操作するときは、文字列リテラルではなく文字列オブジェクトを操作しているため、 を使用してリテラル バージョンを取得する必要がありますvalueOf

于 2013-03-05T03:52:24.197 に答える