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 个参数、格式字符串和参数对象。第二次尝试时您离得更近了,但格式的上下文可能应该是util. 您需要添加this到应用于format. 此外,在处理this字符串时,您使用的是字符串 Object,而不是字符串文字,因此您必须使用valueOf.

于 2013-03-05T03:52:24.197 回答