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

我正在尝试创build/扩展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)}; 

这些都没有工作。 你有什么想法我做错了吗?

谢谢,曼努埃尔

我假设你会这样称呼它?

 "%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个参数,格式string和参数对象。 你接近第二次尝试,但格式的上下文应该是util 。 您需要this添加到应用于format的参数集。 另外,在string上处理this问题时,您使用的是stringObject,而不是string文字,因此您必须使用valueOf获取文字版本。