String.prototype.parse = function(f) {
alert(this.replace(f, ""));
};
var a = "Hello World";
parse.apply(a, ["Hello"]);
Run Code Online (Sandbox Code Playgroud)
代码是否正确?
不,那不对.该函数被定义为String.prototype.parse,因此它不可用parse(事实上,parse未定义).
您可以像下面这样运行它:
String.prototype.parse.apply(a, ["Hello"]);
Run Code Online (Sandbox Code Playgroud)
但实际上,将函数添加到String原型的原因是您使用该函数扩展String对象.所以你实际上应该像这样运行这个函数:
a.parse("Hello");
Run Code Online (Sandbox Code Playgroud)
哦,并回答你的问题标题"为什么这个函数返回为未定义?":该函数不返回任何内容,因为你没有告诉函数返回任何东西.例如,你可以像这样定义它来返回被替换的字符串(而不是警告它):
String.prototype.parse = function(f) {
return this.replace(f, "");
};
Run Code Online (Sandbox Code Playgroud)
然后你可以提醒函数的返回值:
alert(a.parse("Hello"));
Run Code Online (Sandbox Code Playgroud)