Javascript 有没有一种方法可以有条件地引用字符串上的函数,例如.replace()?

Javascript 有没有一种方法可以有条件地引用字符串上的函数,例如.replace()?,javascript,node.js,Javascript,Node.js,仅保留在var语句中,例如: var foo = 0, bar = "abc".replace("a", "x"); // want bar to equal "abc" var foo = 1, bar = "abc".replace("a", "x"); // want bar to equal "xbc" 仅当foo为1时才进行替换。比如: var foo = 0, bar = "abc"[foo ? "replace" : "some noOp function"]("a", "x")

仅保留在var语句中,例如:

var foo = 0, bar = "abc".replace("a", "x"); // want bar to equal "abc"
var foo = 1, bar = "abc".replace("a", "x"); // want bar to equal "xbc"
仅当foo为1时才进行替换。比如:

var foo = 0, bar = "abc"[foo ? "replace" : "some noOp function"]("a", "x");
是否存在可用于“某些noOp函数”的noOp类型函数而不是“replace”?我不想修改任何原型。有没有一种方法可以使用现有的方法来实现这一点

“abc”可以在变量中,例如:

var baz = "abc", foo = 0, bar = baz[foo ? "replace" : "some noOp function"]("a", "x")

对于字符串,您可以使用
toString/valueOf
方法,该方法将返回相同的字符串,并且不带参数,因此您可以无需担心地传递任何内容

功能条(foo){
返回“abc”[foo?”替换为:“toString”](“a”、“x”);
}
console.log(bar(true));

控制台日志(条(假))如果
foo
0
,你希望
bar
等于什么?@Bryan Downing“abc”的可读性优于简洁性。
var bar=foo有什么问题吗?“abc”.replace(“a”,“x”):“abc”
?@axiac想要一种替换函数名的方法。见公认的答案。你的建议显然有效,但不是我想要的。太好了。这很有效。非常感谢。答案是马克。同意您的意见,但在某些情况下……)是的,我知道,但我觉得有必要添加注释,供将来的读者阅读:P。你也可以使用
valueOf