字符串上的调用函数(Javascript)

字符串上的调用函数(Javascript),javascript,function,Javascript,Function,如何直接对字符串调用函数 var test = function(x){ console.log(x); }; test(); ** 上面的日志应该是“未定义的” 如果我尝试: "test".test(); 我得到: "error" "TypeError: \"test\".test is not a function. "error" "TypeError: example.test is not a function 但测试是一种功能。因此,即使我尝试: var example

如何直接对字符串调用函数

var test = function(x){
  console.log(x);
};

test();
** 上面的日志应该是“未定义的”

如果我尝试:

"test".test();
我得到:

"error"
"TypeError: \"test\".test is not a function.
"error"
"TypeError: example.test is not a function
但测试是一种功能。因此,即使我尝试:

var example = "test";

example.test();
我得到:

"error"
"TypeError: \"test\".test is not a function.
"error"
"TypeError: example.test is not a function

非常感谢您的帮助。

是的,
test
是一个函数,但
String.prototype.test
不是一个函数。该值是
未定义的
,使用调用运算符调用
未定义的
值会抛出一个
类型错误

是,
测试
是一个函数,但
字符串.prototype.test
不是一个函数。值是
未定义的
,使用调用运算符调用
未定义的
值会抛出一个
类型错误

,问题有点不清楚,但是如果您试图将字符串作为参数传递给函数,那将是错误的

 test("hello");

 var example = "hello";
 test(example);

这个问题有点不清楚,但是如果您试图将字符串作为参数传递给函数,那将是

 test("hello");

 var example = "hello";
 test(example);

您必须首先使用

例如:

String.prototype.cleanSpaces = function() {
     return this.replace(" ", '');
};

现在您可以调用
“test”。cleanspace()
您必须首先使用

例如:

String.prototype.cleanSpaces = function() {
     return this.replace(" ", '');
};

现在您可以调用
“test”.cleanspace()
使用
原型

 String.prototype.test = function () {
    console.log(this.toString());
}

'test'.test();

它将在控制台中输出
测试
使用
原型

 String.prototype.test = function () {
    console.log(this.toString());
}

'test'.test();

它将在console中输出
test
以扩展其他答案,您创建了一个名为
test()
的函数,但该函数不属于任何对象,也不属于任何字符串。您尚未为字符串定义名为
test()
的函数,因此出现了错误

为此,您可以尝试以下操作:

String.prototype.test = function() {
    console.log(this);
};
"hello".test();

阅读原型。本质上,javascript中的对象有属性和方法,它们也有原型的属性和方法。

为了进一步扩展其他答案,您创建了一个名为
test()
的函数,但该函数不属于任何对象,也不属于任何字符串。您尚未为字符串定义名为
test()
的函数,因此出现了错误

为此,您可以尝试以下操作:

String.prototype.test = function() {
    console.log(this);
};
"hello".test();

阅读原型。本质上,javascript中的对象有属性和方法,它们也有原型的属性和方法。

这是一个函数,但它与任意字符串有什么联系?JS如何知道一个字符串确实有一个同名函数?要清楚:如果您试图将参数传递给用户定义的函数,请参阅Thilo的答案。如果您希望向
字符串
对象添加一个方法,然后对
字符串
类型值调用该方法,请参见Luke的回答。是的,
测试(全局变量)是一个函数,但
示例。测试
测试。测试
(字符串属性)不是错误消息所述的函数。它是一个函数,但是它与任意字符串有什么联系呢?JS如何知道一个字符串确实有一个同名函数?要清楚:如果您试图将参数传递给用户定义的函数,请参阅Thilo的答案。如果您希望向
字符串
对象添加一个方法,然后在
字符串
类型值上调用该方法,请参见Luke的回答。是的,
test
(全局变量)是一个函数,但
示例。test
“test”。test
(字符串属性)不是,正如您的错误消息所述。我非常清楚:他问如何调用原型函数或方法。对此不太确定。这可能只是关于如何使用参数调用函数的基本问题。看起来应该将
x
参数设置为所讨论的字符串。在使用统一调用语法的语言中,
a.test()
test(a)
testa
相同。我非常清楚:他问如何调用原型函数或方法。对此不太确定。这可能只是关于如何使用参数调用函数的基本问题。看起来应该将
x
参数设置为所讨论的字符串。在使用统一调用语法的语言中,
a.test()
test(a)
testa
.test()
是正确的,尽管我的理解是OP只是在玩弄函数。我可能不正确?我不认为你对OP的评估是错误的,但我只是指出了这一点,因为你说“不属于任何物体”谢谢。这正是我要找的。我试图寻找这个答案,但在不知道原型的情况下,很难找到我想要的。谢谢你的帮助。我只是想说,在那里定义的函数有点浮动,而不是说没有名为test的函数存在:)
.test()
是真的,尽管我的理解是OP只是在摆弄函数。我可能不正确?我不认为你对OP的评估是错误的,但我只是指出了这一点,因为你说“不属于任何物体”谢谢。这正是我要找的。我试图寻找这个答案,但在不知道原型的情况下,很难找到我想要的。谢谢你的帮助。我的意思只是,在那里定义的函数有点浮动,而不是说没有名为test的函数存在:)