序列化JavaScript对象

一、问题: 欲将一个JavaScript对象,按如下格式序列化(序列化成字符串): 变量名<类型>: [值] 变量名<类型>: [值] 变量名<类型>: [值] 变量名<类型>: [值] 变量名<类型>: [值] ... [More]

JavaScript Memory Leak Testing

Download word version: JavaScript Memory Leak Testing (v2).docx (468.49 kb) What a memory leak is In its simplest form, a memory leak occurs when a program does not release memory it allocated. What a... [More]

Uncaught RangeError: Maximum call stack size exceeded

一、问题: 今天在做网页时突然碰到这样的JavaScript错误: Uncaught RangeError: Maximum call stack size exceeded 百思不得其解,千次调试找不到原因。 表面上看,是因为递归次数太多导致内存被耗费太多,但是我的程序中,并没有一处使用递归算法啊。 二、原因: 最终冷静地思考了良久,终于发现,问题的根源在于网页中引用了两个不同的J... [More]

给JavaScript的String对象添加startsWith(), endsWith()等方法

用C#用习惯了,在写JavaScript代码时,用字符��时没有了startsWith()和endsWith()方法颇感不适应。于是自己给JavaScript的String对象添加两个,顺便再添加一个删除所有空白字符的方法。 // // 给字符串对象添加一个startsWith()方法 // String.prototype.startsWith = f... [More]

对JavaScript的Math.pow()函数的一个修正

一、问题: JavaScript的Math对象中有一个方法Math.pow(x, y),用来求x的y次方。它有一个问题,即当x<0且y<1的时候,它总是返回NaN。对于x<0且1/y为偶数时,它返回NaN是有道理的,因为负数不能够被开偶数次方根。但是对于x<0且1/y为奇数时,返回NaN就没有道理了,因为负数也可以被开奇数次方根。 即JavaScript的Math.po... [More]

Google搜索结果链接打不开的解决方案(二)

一、问题: 在大陆,经常会碰到这个问题,就是使用Google成功搜索出了一堆结果列表,然而在单击其中一条结果时,打开的页面说无法显示此网页(错误 101 (net::ERR_CONNECTION_RESET):连接已重置。)。如下图: 二、原因分析: 见:《Google搜索结果链接不能打开的解决方案》。 三、解决方案: 复制没有打开的链接网址,如:http://www.goog... [More]

Array 对象的最大最小值方法之修订版

一、背景: 十月27号,我写过《给JavaScript的Array对象添加两个最大最小值方法》,非常简洁。今天我发现,这个简洁的实现给我惹了点麻烦。如果有一个数组,里面并不全为数字,那么,简洁版实现的最大最小值方法,将返回NaN对象,即Not a Number。 二、目标: 我希望达到的效果是,如果数组里面不全为有限数字,最大最小值方法仍然能够返回其中的有限数字部分的最大最小值。如果全不为数... [More]

给JavaScript的Array类添加几个统计方法

一、问题 在编程对数据进行统计时,经常使用数组来存储数列。然后JavaScript的Array类,几乎没有相关的方法(除了.length得到数列的容量外)。 前面给JavaScript的Array对象添加了两个最大最小值方法,今天再给扩充一下,添加求和、平方和、平均值、偏差平方和、样本标准差、总体标准差这几个方法。 二、源码 Array.prototype.sum = functi... [More]

以禁用网页安全模式启动Google Chrome

一、问题 为了防止跨站点脚本攻击以及其他安全隐患,一般浏览器会检查脚本所在的域,如果试图使用一个站点的脚本去操纵其他站点的页面元素,则会阻止脚本运行,并报错。 比如,你建立了一个站点,在这个站点网页中放入一个Iframe,并在此Iframe中加载一个其他网站,比如www.baidu.com,然后,你在自己的网页中,使用JavaScript试图去在百度页面上添加一个自己的链接,就会碰到这种安全错误。... [More]