文章关键字 ‘JavaScript’

邪恶的eval和new Function

2011年05月5日,星期四

代码:

// 友善提醒:为了你的手指安全,请在Chrome下运行
'alert("hello")'.replace(/.+/, eval);
'alert("hello")'.replace(/.+/, function(m){new Function(m)();});

var i = 0; eval(new Array(101).join('alert(++i);'));
var i = 0; new Function(new Array(101).join('alert(++i);'))();

(更多…)

JavaScript Unicode UTF-8

2011年04月26日,星期二

JavaScript 字符串使用的是 Unicode 编码,实现方式是 UTF-16 ,每个字符占用两个字节,至于是 Big-Endian 还是 Little-Endian ,似乎应该和具体实现有关,不过这并不重要。JavaScript无法直接操作单个字节,所以只能用双字节的 UTF-16 来模拟 UTF-8 ,在内存中的字节并不是真正意义的 UTF-8 。

(更多…)

JavaScript函数参数,传值还是传址?

2011年04月23日,星期六

首先,十万以及万分肯定的说一句, JavaScript 函数传递参数时,是值传递。虽然您可能不信,因为 ECMAScript 变量可能包含两种不同数据类型的值:基本数据类型,和引用数据类型。难道引用数据类型传递的时候难道也是值传递吗?答,没错。

(更多…)

用JavaScript实现Bencode算法

2011年04月22日,星期五

很久以前,在写JavaScript版六维空间流量作弊工具的时候,需要用到Bencode算法。在《Bittorrent Protocol Specification》上面找到了一个JScript的实现,然而,不幸的是,上面的那个算法是错误的,程序会陷入死循环,用不了多久电脑就死机了。当时急于求成,用迂回的的方法完成了作弊工具,却一直没有完成Bencode算法。今天参考BitTorrent 5.3的Python源码,把JavaScript版的Bencode算法完成了。

(更多…)

用JavaScript读写二进制文件的另一种方法

2011年04月21日,星期四

曾经写过一篇《用JavaScript读写二进制文件》,其实严格的说是JScript,但是很多不明真相的同学根本不区分。内容摘自CodeProject《Reading and Writing Binary Files Using JScript》一文。最近要用JScript处理一些二进制的*.torrent文件,重新看了一遍原文,发现有人在回复中提供了一种更简洁的方法

(更多…)