<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.8.6" -->
<rss version="0.92">
<channel>
	<title>G法师的博客</title>
	<link>http://www.jatx.net</link>
	<description>努力把简单的问题搞复杂 -- 我的代码之旅</description>
	<lastBuildDate>Sat, 10 Jul 2010 00:49:23 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>[]==false之原理</title>
		<description>问题来源      var a = [];

if(a) alert(&#34;true&#34;);//true

if(a == true) alert(&#34;true&#34;);//false




原理

js引擎会先计算括号内的表达式然后将结果转换为布尔值，所以

if(a) =&#62; if(!!a) =&#62; true

if(a == true) =&#62; if(Number(a) == true) =&#62; if(0 == true) =&#62; true

注: 在比较的两个值中，如果有一个是布尔类型，那么另外一个值将会先被转换为数字类型再与其比较。

参考： 双等号的比较原理

所以，下面这个就会有看起来奇怪的结果

[] == ![] //true </description>
		<link>http://www.jatx.net/archives/124</link>
			</item>
	<item>
		<title>超长叠代</title>
		<description>   for(var i=0; i&#60;1000000; i++) {
    //do some thing.
}


话说以上代码很可能会被浏览器判作执行超时。
  试验了一下可以用浏览器的延时来做：


  (function() {
    //do some thing.
    setTimeout(arguments.callee, 0);
})();





  这样一来CPU倒是基本没有，但是这样的代码运行过慢，所以综合一下：


  &#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&#62;
&#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&#62;
 &#60;head&#62;
 &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=utf-8&#34; /&#62;
  &#60;title&#62; ...</description>
		<link>http://www.jatx.net/archives/122</link>
			</item>
	<item>
		<title>MYSQL导入与导出命令</title>
		<description>可以备份大量数据

1，数据库备份命令
mysqldump -h localhost  -u   root   -p   --default-character-set=utf8   dbname >backup.sql

2，导入数据命令：
mysql -h localhost  -u   root   -p   --default-character-set=utf8
use dbname
source backup.sql </description>
		<link>http://www.jatx.net/archives/120</link>
			</item>
	<item>
		<title>双等号的比较原理</title>
		<description>直接摘自ECMA262    章节号：11.9.3 The Abstract Equality Comparison Algorithm     比较 x == y, 当 x 和 y 都是值的时候, 产生true或false. 这样的一个比较执行如下：      If Type(x) is the same as Type(y), then             ...</description>
		<link>http://www.jatx.net/archives/119</link>
			</item>
	<item>
		<title>自定义事件之双击按键</title>
		<description>   遇到这样的需求，双击按键的事件    还是直接上代码吧：         //首先准备好常规的事件绑定函数
function addEvent(element, name, callback) {
	//标准浏览器
	if(element.addEventListener) element.addEventListener(name, callback, false);
	//IE
	else element.attachEvent(&#34;on&#34; + name, callback);
}
//双击按键绑定函数
function addDblPressEvent(element, callback) {
	var presstime = 2;//次数为2
	addEvent(element, &#34;keyup&#34;, press);
	//每次单击触发
	function press(e) {
		presstime--;
		setTimeout(reset, 300);
		if(presstime === 0) fire(e);
	}
	//恢复计数器
	function reset() {
		presstime++;
	}
	//触发双击
	function fire(e) {
		callback.call(element, e);
	}
}

//试一下
window.onload = function() {
	addDblPressEvent(document, ...</description>
		<link>http://www.jatx.net/archives/116</link>
			</item>
	<item>
		<title>system</title>
		<description>我忘了是否从哪里看过，或者是否是经典，仅仅是突然想到的，就是这样的[caption id="attachment_114" align="alignleft" width="300" caption="系统"][/caption] </description>
		<link>http://www.jatx.net/archives/113</link>
			</item>
	<item>
		<title>function.delay</title>
		<description>扩展一个函数的延时调用    Function.prototype.delay =  function(n, thisObj, args) {  
    var me = this;  
    args = args instanceof Array ? args : [];  
    var f = function() {  
     ...</description>
		<link>http://www.jatx.net/archives/109</link>
			</item>
	<item>
		<title>各浏览器的鼠标键盘事件整理</title>
		<description>这是Window XP(sp3)下的测试结果，如下表：

  
  Key Event
  (windows XP)
  
  
    浏览器
    一次触发
    连续触发
  
  
    &#160;
    控制键
    非控制键
    控制键
    非控制键
 ...</description>
		<link>http://www.jatx.net/archives/105</link>
			</item>
	<item>
		<title>浏览器中的key event--ubuntu</title>
		<description>测试了一下ubuntu中的浏览器对于键盘事件的触发情况，结果如下：


  
    Key Event
  (Ubuntu9.10)
  
  
    浏览器
    一次触发
    连续触发
  
  
    &#160;
    控制键
    非控制键
    控制键
    非控制键
 ...</description>
		<link>http://www.jatx.net/archives/100</link>
			</item>
	<item>
		<title>学习canvas</title>
		<description>&#60;canvas  是HTML5 中新加入的一个标记
功能是创建一个“画板”对象及一组供javascript使用的API
基本标签的写法是这样的

&#60;canvas width="100" height="100" id="canvas"&#62;&#60;/canvas&#62;

创建了这个对象以后我们就可以用js来在上面画东西了

首先取得这个对象的引用

var canvas = document.getElementById("canvas");
然后取得绘制对象
var ctx = canvas.getContext("2d");

现在用ctx画一条直线

先把“画笔”放到起始点（0, 0）

ctx.moveTo(0, 0);

然后画线到（50, 50）

ctx.lineTo(50, 50);

把线画出来
ctx.stroke();

就这么简单， 更多的测试看 canvas测试页
Canvas tutorial </description>
		<link>http://www.jatx.net/archives/95</link>
			</item>
</channel>
</rss>
