我正在尝试创建/扩展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)};
这些都不起作用。你知道我做错了什么吗?
谢谢, 曼努埃尔
答案 0 :(得分:5)
我认为你会这样称呼它?
"%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个参数,格式字符串和arguments对象。第二次尝试越接近,但格式的上下文应该是util
。您需要将this
添加到应用于format
的参数集中。此外,在字符串上使用this
时,您使用的是字符串Object,而不是字符串文字,因此您必须使用valueOf
获取文字版本。