Оставаться в инструкции 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");
Вместо "replace" существует функция типа noOp, которая может использоваться для "некоторой функции noOp"? Я не хочу изменять какие-либо прототипы. Есть ли способ сделать это, используя существующие методы?
"abc" может быть в переменной, например:
var baz = "abc", foo = 0, bar = baz[foo ? "replace" : "some noOp function"]("a", "x")
Для строки вы можете использовать метод toString/valueOf
, который будет возвращать одну и ту же строку, и он не принимает аргументы, поэтому вы можете передавать все, что хотите, не беспокоясь.
function bar(foo) {
return "abc"[foo ? "replace" : "toString"]("a", "x");
}
console.log(bar(true));
console.log(bar(false));
Во всяком случае, я не рекомендую это делать. Лучше не называть функцию, и я не считаю ее очень чистой.
valueOf
.
bar
будет равен, еслиfoo
был0
?