知ってました?
var \u5929\u91CE = 'amachang'; alert(天野); // amachang var \u0068\u006f\u0067\u0065 = 'ほげ'; alert(hoge); // ほげ
ついでに今回作ったエスケープ関数置いておきます。(Firefox Only)
var unicodeEscape = function (s) { var d = ''; Array.prototype.forEach.call(s, function(c) { var s = c.charCodeAt().toString(16); d += '\\u'; for(var l = s.length; l < 4; l++) d += '0'; d += s; }); return d; };
上の unicodeEscape 関数作ってて発見したんだけど
配列の forEach って文字列にも使えるみたい。
こんな感じ
Array.prototype.forEach.call('わーわー!', alert);
というか
数値のプロパティと length プロパティがあると使えるのか
Array.prototype.forEach.call({0: 0, 1:1, length:1}, alert); // 0 Array.prototype.forEach.call({0: 0, 1:1, length:2}, alert); // 0,1 Array.prototype.forEach.call({0: 0, 1:1, length:3}, alert); // 0,1 Array.prototype.forEach.call({0: 0, 2:2, length:3}, alert); // 0,2
この実験から、まず length プロパティの値を見て length の数だけ数値のプロパティを走査し、要素があれば関数を呼び出すという挙動らしい。
また、仕様書嫁とか言われそうだけど。
あれ?
Unicode Escape の話しより、forEach の話しのほうが長くなっちゃったな
まあいいや。