String.prototype.parse = function(f) {
alert(this.replace(f, ""));
};
var a = "Hello World";
parse.apply(a, ["Hello"]);
代码是否正确?
最佳答案
不,那是不正确的。该函数被定义为 String.prototype.parse
,因此它不能作为 parse
使用(实际上,parse
是未定义的)。
你可以像下面这样运行它:
String.prototype.parse.apply(a, ["Hello"]);
但实际上,之所以将函数添加到 String 的原型(prototype)中,是因为您使用该函数扩展了 String 对象。所以你实际上应该像这样运行函数:
a.parse("Hello");
编辑:
哦,针对你的问题标题“为什么这个函数返回未定义?”:函数不返回任何东西,因为你没有告诉函数返回任何东西。例如,您可以这样定义它以返回替换的字符串(而不是提醒它):
String.prototype.parse = function(f) {
return this.replace(f, "");
};
然后你可以提醒函数的返回值:
alert(a.parse("Hello"));
关于javascript - 为什么这个函数返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5363464/