String.prototype.parse = function(f) {
alert(this.replace(f, ""));
};
var a = "Hello World";
parse.apply(a, ["Hello"]);
代码是否正确?
答案 0 :(得分:6)
不,那不对。该函数定义为String.prototype.parse
,因此它不可用parse
(事实上,parse
未定义)。
您可以像以下一样运行它:
String.prototype.parse.apply(a, ["Hello"]);
但实际上,将函数添加到String原型的原因是您使用该函数扩展String对象。所以你实际上应该运行这样的函数:
a.parse("Hello");
哦,并回答你的问题标题“为什么这个函数返回为未定义?”:该函数不返回任何内容,因为你没有告诉函数返回任何东西。例如,你可以像这样定义它来返回被替换的字符串(而不是警告它):
String.prototype.parse = function(f) {
return this.replace(f, "");
};
然后你可以提醒函数的返回值:
alert(a.parse("Hello"));
答案 1 :(得分:0)
您的代码示例中没有定义此类变量parse
。如果你以后真的想要apply
这个功能,你应该这样做:
// Capture function as a local variable first
var parse = function(f) { alert(this.replace(f, "")); };
String.prototype.parse = parse;