Use the ('' + string) form of string coercion

Using string.toString() will throw errors in current versions of Safari
(6.0.5 currently) for some values. The error is a particularly cryptic
"Type Error: type error", which no indication as to the value that
caused the error. By using the '' + string form of coercion the error
doesn't seem to occur.

Depending on the browser used there is a sizable performance increase
in using the concatenation form of coercion. In instances where there
is not a performance improvement (i.e. Firefox), the speed difference
is entirely negligable. See: http://jsperf.com/convert-to-string-bj/3
This commit is contained in:
Parker Selbert
2013-05-23 16:18:53 -05:00
parent 860853ddb4
commit d02c90c0fb
+2 -2
View File
@@ -21,7 +21,7 @@ Handlebars.SafeString = function(string) {
this.string = string;
};
Handlebars.SafeString.prototype.toString = function() {
return this.string.toString();
return "" + this.string;
};
var escape = {
@@ -60,7 +60,7 @@ Handlebars.Utils = {
// Force a string conversion as this will be done by the append regardless and
// the regex test will do this transparently behind the scenes, causing issues if
// an object's to string has escaped characters in it.
string = string.toString();
string = "" + string;
if(!possible.test(string)) { return string; }
return string.replace(badChars, escapeChar);