2014-11-04 69 views
0

我想知道是否有可能在JavaScript蝙蝠俠笑話的「蝙蝠俠」的文字更改爲ASCII,然後將其轉換並讓它出現在瀏覽器JavaScript的ASCII文本

原來的笑話是

javascript:Array(16).join("lol" - 1) + "Batman" 

可以將其改爲類似

javascript:Array(16).join("lol" - 1) + [66, 97, 116, 109, 097, 110].forEach(function(e) { document.write(String.fromCharCode(e)); }); 

其中[66,97,等]針對蝙蝠俠的ASCII碼。這會失敗,因爲文檔對象不存在於空的瀏覽器窗口中。

(PS隨意刪除,如果這是不恰當的,它只是爲了好玩)

回答

1

你不實際上你不需要爲你的數組使用任何類型的循環或迭代器,String.fromCharCode實際上會接受你想給它的儘可能多的字符。因此,這會工作得很好:

javascript:Array(16).join(-'.') + String.fromCharCode(66, 97, 116, 109, 097, 110); 

不過,如果你想叫String.fromCharCode爲陣,你可以的每一個元素。每個JavaScript函數可以使用Function.prototype.apply被稱爲將運行每個數組元素的功能:

javascript:Array(16).join("lol" - 1) + String.fromCharCode.apply(this,[66, 97, 116, 109, 097, 110]); 

而且,"lol" - 1目的是試圖創建一個壞的數字(NaN或非數字)。如果您想進一步混淆事物,則可以對非數字字符串使用任何數學運算。例如:

javascript:Array(16).join(-'.') + String.fromCharCode.apply(this,[66, 97, 116, 109, 097, 110]) 

因爲-'.'被滲入的0 - '.'不作任何意義,因此它的NaN。

+0

謝謝沃倫,很好的回答! – 2014-11-05 12:18:44

0

你可以這樣做:

javascript:var str='';[66, 97, 116, 109, 097, 110].forEach(function(e) { str+= (String.fromCharCode(e)); }); Array(16).join("lol" - 1) + str; 

或者:

javascript:Array(16).join("lol" - 1) + [66, 97, 116, 109, 097, 110].map(function(e) { return (String.fromCharCode(e)); }).join('');