Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
68
rated 0 times [  75] [ 7]  / answers: 1 / hits: 22246  / 10 Years ago, sun, august 10, 2014, 12:00:00

I have following snippet of javascript code:



var someValue = 100;
var anotherValue = 555;
alert('someValue is {0} and anotherValue is {1}'.format(someValue, anotherValue));


getting following error:



Uncaught TypeError: undefined is not a function


what am i missing, here ?


More From » javascript

 Answers
16

String.format is not a native String extension. It's pretty easy to extend it yourself:





if (!String.prototype.format) {
String.prototype.format = function(...args) {
return this.replace(/({d+})/g, function(a) {
return args[+(a.substr(1, a.length - 2)) || 0];
});
};
}
// usage
console.log({0} world.format(hello));

.as-console-wrapper { top: 0; max-height: 100% !important; }





[Update 2020]



It's not that fashionable anymore to extend native objects. Although I don't oppose it (if used carefully) a format-function can do exactly the same, or you can use es20xx template literals (see MDN).





// no native String extension
const someValue = 100;
const otherValue = 555;
const format = (str2Format, ...args) =>
str2Format.replace(/({d+})/g, a => args[+(a.substr(1, a.length - 2)) || 0] );
console.log(format(someValue = {0}, otherValue = {1}, someValue, otherValue));

// template literal
console.log(`someValue = ${someValue}, otherValue = ${otherValue}`);

.as-console-wrapper { top: 0; max-height: 100% !important; }




[#69839] Friday, August 8, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
alli

Total Points: 409
Total Questions: 101
Total Answers: 105

Location: The Bahamas
Member since Tue, Apr 27, 2021
3 Years ago
alli questions
Sat, Apr 23, 22, 00:00, 2 Years ago
Mon, May 18, 20, 00:00, 4 Years ago
Tue, Mar 24, 20, 00:00, 4 Years ago
Fri, Jan 24, 20, 00:00, 4 Years ago
;