<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>哈哈小老虎&#039;s Blog</title>
	<atom:link href="http://www.mytcer.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mytcer.com</link>
	<description></description>
	<lastBuildDate>Sat, 31 Dec 2011 15:42:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>我的2011</title>
		<link>http://www.mytcer.com/1118</link>
		<comments>http://www.mytcer.com/1118#comments</comments>
		<pubDate>Sat, 31 Dec 2011 15:40:41 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[思考]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=1118</guid>
		<description><![CDATA[2011的最后一晚，我选择一个人静静的待在家里，回忆自己走过的一年。。。 一. 新增的爱好 摄影；看书；徒步；登山。 二. 读过的杂书 《大秦帝国》 《中国帝王史》 《康熙大帝》 《雍正皇帝》 《乾隆皇帝》 《啼笑因缘》 《春明外史》 《金粉世家》 《细说民国大文人》 《民国多少事》 《自由在高处》 《平凡的世界》 《七日谈》 《朱镕基讲话实录》 《盗墓笔记》 《鬼吹灯》 三. 走过的山路 1. 徽杭古道（徒步） 2. 西湖群山（徒步） 3. 大明山 4. 黄山 5. 天目山 6. 龙泉山（江浙最高峰&#8211;黄茅尖所在地） 四. 看过的技术书籍 1. 《UNIX编程艺术》 2. 《重构：改善现有代码的设计》 3. 《Standard ECMA-262-3》 4. 《Essential JavaScript Design Patterns》 五. 做过的技术尝试 1. 编写跨浏览器的本地存储组件（已在多个产品中使用，且已内置于新版KISSY库中）； 2. [...]]]></description>
		<wfw:commentRss>http://www.mytcer.com/1118/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【分享】试玩前端测试的前因后果</title>
		<link>http://www.mytcer.com/1110</link>
		<comments>http://www.mytcer.com/1110#comments</comments>
		<pubDate>Tue, 20 Dec 2011 01:45:22 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[前端测试]]></category>
		<category><![CDATA[cloudyrun]]></category>
		<category><![CDATA[jasmine]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=1110</guid>
		<description><![CDATA[在组内做的一次关于前端测试的分享，内容提纲如下： 1. 前端测试包含哪些内容； 2. 为何要尝试前端测试； 3. 哪些产品成了小白鼠； 4. 如何测试产品的功能； 5. 如何实现自动化测试； 6. 尝试中遇到的一些问题； 7. 前端测试带来的一些益处。 View more presentations from hahaxiaolaohu.]]></description>
		<wfw:commentRss>http://www.mytcer.com/1110/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ES-262学习笔记：作用域链与标识符解析</title>
		<link>http://www.mytcer.com/1093</link>
		<comments>http://www.mytcer.com/1093#comments</comments>
		<pubDate>Thu, 11 Aug 2011 02:56:00 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[identifier resolution]]></category>
		<category><![CDATA[scope chain]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=1093</guid>
		<description><![CDATA[前面的文章提到：当控制进入一个执行上下文时，会创建并初始化一个作用域链。这篇文章来了解下作用域链及其作用。。。 一. 什么是作用域链？ 它是一个对象列表，在控制进入一个执行上下文时被创建。 二. 它的作用是什么？ 在ECMAScript 262-3中，有两处提到了它的作用： 1. 8.6.2一节，关于函数[[Scope]]属性的描述 ”A scope chain that defines the environment in which a Function object is executed.“ 2. 10.1.4一节，对作用域链的介绍 “A scope chain is a list of objects that are searched when evaluating an Identifier.” 三. 什么是标识符解析？ 我的理解：它是对标识符（即指类，方法，变量的名字）进行求值的过程。 四. 标识符的解析逻辑 在ECMAScript 262-3中10.1.4一节，对标识符的解析逻辑描述如下： // 假设带解析的标识符为P 1. 获取当前作用域链上的下一个对象O； 2. 检查对象O上是否存在属性P； 3. [...]]]></description>
		<wfw:commentRss>http://www.mytcer.com/1093/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ES 262学习笔记：变量初始化</title>
		<link>http://www.mytcer.com/1063</link>
		<comments>http://www.mytcer.com/1063#comments</comments>
		<pubDate>Mon, 08 Aug 2011 09:58:28 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[variable instantiation]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=1063</guid>
		<description><![CDATA[前面的文章提到：当控制进入一个执行上下文时，会进行变量初始化。这篇文章来了解下变量初始化及其过程。。。 一. 什么是变量初始化 ES 262-3中，”10.1.3 Variable Instantiation”一节有相关描述： 每个执行上下文都有一个相关的变量对象，当进入一个执行上下文时，代码中的函数形参（对于函数代码而言），函数声明，变量声明会以属性的形式添加到变量对象上并赋初始值，这就是变量初始化。 二. 变量初始化的顺序 当进入一个执行上下文时，属性会按照”函数形参 &#8211; 函数声明 &#8211; 变量声明”的先后顺序，依次添加到变量对象上，详细情况如下： 1. 函数形参（对于函数代码而言） （1）添加到变量对象时，其属性名为形参名，属性值为实参的值； （2）如果实参的数量少于形参，那么多出的形参，其属性值为undefined； （3）如果存在两个或者两个以上的同名形参，则只会创建一个属性，属性值为最后一个对应实参的值； 若最后一个实参未指定，则值为undefined。 // 以下例子，已在IE6~9，FF4+，Chrome 11+，Safari 5.0.3，Opera 11.01中测试通过 例_1：两个同名形参，对应的两个同名实参也已指定 function show(a,b,b) {alert(b);} show(1,2,3); // 3 例_2：两个同名形参，缺少最后一个同名实参 function show(a,b,b) {alert(b);} show(1,2); // undefined 2. 函数声明 （1）添加到变量对象时，其属性名为函数名，属性值为新创建的函数对象； （2）如果变量对象上已存在同名属性，那么该同名属性的值将被替换为函数对象； // 以下例子，已在IE6~9，FF4+，Chrome 11+，Safari 5.0.3，Opera 11.01中测试通过 例_1：函数声明与函数形参同名 function show(a,b) { function a() [...]]]></description>
		<wfw:commentRss>http://www.mytcer.com/1063/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ES-262学习笔记：全局对象和活动对象的特点</title>
		<link>http://www.mytcer.com/1082</link>
		<comments>http://www.mytcer.com/1082#comments</comments>
		<pubDate>Mon, 08 Aug 2011 09:43:19 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[active object]]></category>
		<category><![CDATA[global object]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=1082</guid>
		<description><![CDATA[前一篇文章提到：在进行变量初始化时，全局代码和函数代码分别以”全局对象和活动对象”作为变量对象。这篇文章来解下这两种对象的特别之处。。。 一. 全局对象 1. 全局对象是独一无二的，它在控制进入任何执行上下文之前创建； 2. 初始的全局对象拥有这些属性：内置对象，如Math，String，Date，parseInt等； 宿主定义的属性，如window属性； 3. 它不能被当作构造器和函数使用； 4. 它的原型和类型（typeof的值）取决于实现。 二. 活动对象 1. 当控制进入一个函数执行上下文时，会创建一个活动对象并与函数执行上下文相关联； 2. 在变量初始化时，活动对象被作为变量对象； 3. 初始的活动对象仅有一个arguments属性，属性值为Arguments对象； 4. ECMAScript程序可以访问变量对象的成员，但不能访问变量对象本身； 5. 对于一个调用，如果其基础对象是活动对象，那么该调用的this值为null（最终的this值为全局对象）。 三. Arguments对象 当控制进入一个函数执行上下文时，会创建一个Arguments对象，并按照下面的顺序初始化： 1. 将Arguments对象的[[Prototype]]属性值设置为Object.prototype； 2. 为Arguments对象创建一个callee属性，属性值为函数对象本身； 3. 为Arguments对象创建一个length属性，属性值为实参的数量； 4. 将实参作为属性值，按序添加到Arguments对象上，属性名依次为0，1，...； Arguments对象上的实参属性，与活动对象上对应的形参属性共享属性值，即在其中一个对象上改变属性值，另一个对象的相应属性也会发生同样的改变。关于这一点，可以通过下面的例子得到证明： // 以下例子，在IE6~9，FF4+，Chrome11+，Safari 5.0.3，Opera 11.50测试通过 例_1： function a(x, y) { alert(x === arguments[0]); // true } a(1,2); 例_2： function a(x, [...]]]></description>
		<wfw:commentRss>http://www.mytcer.com/1082/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ES-262学习笔记：进入执行上下文时，发生了什么？</title>
		<link>http://www.mytcer.com/1066</link>
		<comments>http://www.mytcer.com/1066#comments</comments>
		<pubDate>Mon, 08 Aug 2011 03:21:13 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[executable code]]></category>
		<category><![CDATA[scope chain]]></category>
		<category><![CDATA[variable instantiation]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=1066</guid>
		<description><![CDATA[当控制转移到可执行代码时，便会进入一个执行上下文，此时会创建并初始化作用域链，进行变量初始化，确定this的值。而作用域链的初始化，变量初始化及this值的确定，则取决于可执行代码的类型。。。 一. 全局代码 1. 初始化后的作用域链仅包含全局对象； 2. 使用全局对象作为变量对象来进行变量初始化； 3. this的值为全局对象。 // 以下例子，在IE6~9，FF4+，Chrome 11+，Safari 5.0.3，Opera 11.01中测试通过 例_1： var a = 1; alert(this === window); // true alert(this.a); // 1 二. Eval代码 当控制进入一段Eval代码的执行上下文时，上一个活动的执行上下文（称为调用上下文），被用来决定作用域链，变量对象及this的值。如果没有调用上下文，那么作用域链的初始化，变量初始化及this值的确定，和全局代码一样。 1. 初始化后的作用域链和调用上下文的作用域链相同； 2. 使用调用上下文的变量对象来进行变量初始化； 3. this值和调用上下文的this值相同。 // 以下例子，在IE6~9，FF4+，Chrome 11+，Safari 5.0.3，Opera 11.01中测试通过 例_1： function test() { var self = this; eval("alert(this === self)"); } test(); // [...]]]></description>
		<wfw:commentRss>http://www.mytcer.com/1066/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ES-262学习笔记：可执行代码的类型</title>
		<link>http://www.mytcer.com/1044</link>
		<comments>http://www.mytcer.com/1044#comments</comments>
		<pubDate>Tue, 02 Aug 2011 01:04:50 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[executable code]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=1044</guid>
		<description><![CDATA[在ECMAScript 262-3中，有三类可执行代码：全局代码，Eval代码和函数代码。 一. 什么是程序？ 在了解可执行代码前，有必要先了解下ECMAScript 262-3对程序的定义（详见ECMAScript 262-3 “14 Program”一节）： Program: SourceElements SourceElements: SourceElement SourceElements: SourceElements SourceElement SourceElement: Statement FunctionDeclaration 说明：从上可知，程序由语句和函数声明组成。 二. 全局代码 全局代码是指被视为ECMAScript程序的代码，但不包括函数体。 var a = 1; function b(x) {alert(x);} 说明："var a = 1;function b(x) {}"属于全局代码，但"alert(x);"则不是。 三. Eval代码 Eval代码是指提供给eval函数的字符串参数。对于一个特定的eval调用，Eval代码会成为全局代码。 1. eval代码 eval("var a = 1;"); 说明："var a = 1;"即为Eval代码。 2. eval代码成为全局代码 eval("var a = 1;"); [...]]]></description>
		<wfw:commentRss>http://www.mytcer.com/1044/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ES-262学习笔记：函数对象的创建过程</title>
		<link>http://www.mytcer.com/1012</link>
		<comments>http://www.mytcer.com/1012#comments</comments>
		<pubDate>Wed, 20 Jul 2011 01:49:35 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[function object]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=1012</guid>
		<description><![CDATA[前一篇文章了解了函数对象的创建方式，那么这篇文章来了解下函数对象的创建过程。。。 一. 创建函数对象所需的三个参数 ECMAScript 262-3中，"Creating Function Objects"一节提到，创建一个函数对象，需要如下三个参数： 1. 函数形参列表（可选）； 2. 函数体； 3. 作用域链（函数所在的执行上下文的作用域链） 二. 创建过程 // 假设用于创建函数对象的作用域链参数为Scope 创建过程： 1. 创建一个新的ECMAScript对象F； 2. 将F的[[Class]]属性设置为"Function"； 3. 将F的原型设置为Function.prototype； 4. 设置F的[[Call]]属性； 5. 设置F的[[Construct]]属性； 6. 将F的[[Scope]]属性设置为Scope； 7. 将F的length属性设置为形参的数量，如果没有形参，则设置为0； 8. 创建一个ECMAScript对象S； 9. 将S的constructor属性设置为F； 10. 将F的prototype属性设置为S； 11. 返回F。 说明： 1. ECMAScript对象（用new Object()创建） 是一个无序的属性集合； 2. 创建函数对象时并不会执行函数，仅当函数被调用时，才会被执行。 三. 关于创建过程的一些验证 1. 函数对象的原型为Function.prototype function a() {} var [...]]]></description>
		<wfw:commentRss>http://www.mytcer.com/1012/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ES-262学习笔记：函数对象的创建方式及其差异</title>
		<link>http://www.mytcer.com/1001</link>
		<comments>http://www.mytcer.com/1001#comments</comments>
		<pubDate>Sun, 10 Jul 2011 08:42:52 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[function object]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=1001</guid>
		<description><![CDATA[在ECMAScript 262-3 “10.1.1 Function Objects”一节，描述了两类函数对象： 1. 程序创建的函数对象，如：function test() {}； 2. 语言内置的函数对象，如：parseInt等等。 这篇文章主要介绍：通过程序创建函数对象的方式，并比较下他们之间的差异。。。 一. 函数声明 // 详见"13 Function Definition"一节 function Identifier ( [FormalParameterList] ) { FunctionBody } 解析步骤： （1）用可选的FormalParameterList作为参数列表，FunctionBody作为函数体，当前执行上下文的作用域链作为Scope，创建一个函数对象F； （2）在当前变量对象上创建一个属性：属性名为Identifier的字符串表示，属性值为F。 二. 匿名函数表达式 // 详见"13 Function Definition"一节 var Variable = function ( [FormalParameterList] ) { FunctionBody }; 解析步骤： （1）用可选的FormalParameterList作为参数列表，FunctionBody作为函数体，当前执行上下文的作用域链作为Scope，创建一个函数对象F； （2）返回F。 三. 具名函数表达式 // 详见"13 Function Definition"一节 var [...]]]></description>
		<wfw:commentRss>http://www.mytcer.com/1001/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ES-262学习笔记：&amp;运算符的工作原理</title>
		<link>http://www.mytcer.com/986</link>
		<comments>http://www.mytcer.com/986#comments</comments>
		<pubDate>Sat, 18 Jun 2011 12:07:22 +0000</pubDate>
		<dc:creator>Tcer</dc:creator>
				<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[按位与运算符]]></category>

		<guid isPermaLink="false">http://www.mytcer.com/?p=986</guid>
		<description><![CDATA[一. &#038;的运算逻辑 1. ES-262-3中，11.10一节对&#038;的运算逻辑描述如下： 以expression1 &#038; expression2为例： 1. 计算expression1； 2. 对Result1进行求值； 3. 计算expression2； 4. 对Result3进行求值； 5. 将Result2转换为32位有符号整数； a. 将Result2转换为数字； b. 如果Result_a是NaN，0，正负无穷大，就返回0； c. 计算Result_a的绝对值，然后对绝对值进行下舍入，最后让结果的符号与Result_a一致； d. 对Result_c和232进行求模； e. 如果Result_d >= 231，就返回Result_d减去232之后的结果；否则，返回Result_d。 6. 将Result4转换为32位有符号整数；（逻辑同上） 7. 对Result5与Result6进行按位与运算； 8. 返回Result7。 二. 示例 1. 有一个操作数为NaN/无穷大/0 // 已在IE6-9，FF4.0.1，Chrome 11.0.696.68，Safari 5.0.3，Opera 11.01中测试通过 alert(10 &#038; NaN); // 0 alert(10 &#038; Number.POSITIVE_INFINITY); // 0 alert(10 [...]]]></description>
		<wfw:commentRss>http://www.mytcer.com/986/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

