javascript - 为什么这个函数返回未定义?

标签 javascript

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/

相关文章:

Javascript 对象代码数组

javascript - 如何在 promise 解决时处理 promise ?

javascript - jquery parseInt 没有给出正确的结果

javascript - JavaScript 中的 .src 是什么?

javascript - 拉维尔 : Different json output for the same query

javascript - 使用 javascript 在下拉列表中选择一个值

javascript - 范围输入以更改文本和图像

javascript - 如何将 npm 包 selenium-standalone 与 Nightmare.js 一起使用而不是下载 selenium jar?

javascript - 如何在来自 AJAX 的文本响应中查找和替换 div

javascript - Highcharts 3D 散点图 : Change Description shown when hovering points