Javascript Node.js util.format()作为String.prototype

Javascript Node.js util.format()作为String.prototype,javascript,node.js,Javascript,Node.js,我正在尝试创建/扩展node.js函数,以便将其用作原型(例如:“Hello%s”.format(“World”))。然而,我一直没有成功尝试它。我尝试了以下格式,但没有效果: String.prototype.format = function(){return util.format(this, arguments)}; 及 而且 String.prototype.format = function(args){return util.format(this, args)}; 这些都不管

我正在尝试创建/扩展node.js函数,以便将其用作原型(例如:“Hello%s”.format(“World”))。然而,我一直没有成功尝试它。我尝试了以下格式,但没有效果:

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

而且

String.prototype.format = function(args){return util.format(this, args)};
这些都不管用。你知道我做错了什么吗

谢谢,
曼纽尔

我想你会这样称呼它吧

"%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);
};

在第一个示例中,您只传递了两个参数:格式字符串和arguments对象。您的第二次尝试更加接近,但格式的上下文可能应该是
util
。您需要将
添加到应用于
格式的参数集
。另外,在字符串上使用
this
时,您使用的是字符串对象,而不是字符串文本,因此您必须使用
valueOf
获取文本版本,我想您会这样调用它

"%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);
};
在第一个示例中,您只传递了两个参数:格式字符串和arguments对象。您的第二次尝试更加接近,但格式的上下文可能应该是
util
。您需要将
添加到应用于
格式的参数集
。另外,在字符串上使用
this
时,您使用的是字符串对象,而不是字符串文本,因此必须使用
valueOf
获取文本版本