<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[JavaScript 参考教程]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Fri, 14 Mar 2008 05:37:05 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<a href="http://www.cnblogs.com/meil/category/62517.html?Show=All" target="_blank">http://www.cnblogs.com/meil/category/62517.html?Show=All</a><br/>JavaScript 是使用“对象化编程”的，或者叫“面向对象编程”的。所谓“对象化编程”，意思是把 JavaScript 能涉及的范围划分成大大小小的对象，对象下面还继续划分对象直至非常详细为止，所有的编程都以对象为出发点，基于对象。小到一个变量，大到网页文档、窗口甚至屏幕，都是对象。这一章将“面向对象”讲述 JavaScript 的运行情况。 <br/>对象的基本知识<br/> 对象是可以从 JavaScript“势力范围”中划分出来的一小块，可以是一段文字、一幅图片、一个表单（Form）等等。每个对象有它自己的属性、方法和事件。对象的属性是反映该对象某些特定的性质的，例如：字符串的长度、图像的长宽、文字框（Textbox）里的文字等等；对象的方法能对该对象做一些事情，例如，表单的“提交”(Submit)，窗口的“滚动”(Scrolling)等等；而对象的事件就能响应发生在对象上的事情，例如提交表单产生表单的“提交事件”，点击连接产生的“点击事件”。不是所有的对象都有以上三个性质，有些没有事件，有些只有属性。引用对象的任一“性质”用“<对象名>.<性质名>”这种方法。<br/><br/>基本对象<br/>现在我们要复习以上学过的内容了——把一些数据类型用对象的角度重新学习一下。<br/><br/>Number “数字”对象。这个对象用得很少，作者就一次也没有见过。不过属于“Number”的对象，也就是“变量”就多了。<br/><br/>属性<br/><br/>MAX_VALUE 用法：Number.MAX_VALUE；返回“最大值”。<br/>MIN_VALUE 用法：Number.MIN_VALUE；返回“最小值”。<br/>NaN 用法：Number.NaN 或 NaN；返回“NaN”（不是数值）在很早就介绍过了。<br/>NEGATIVE_INFINITY 用法：Number.NEGATIVE_INFINITY；返回：负无穷大，比“最小值”还小的值。<br/>POSITIVE_INFINITY 用法：Number.POSITIVE_INFINITY；返回：正无穷大，比“最大值”还大的值。<br/><br/>方法<br/><br/>toString() 用法：<数值变量>.toString()；返回：字符串形式的数值。如：若 a == 123；则 a.toString() == '123'。<br/><br/>String 字符串对象。声明一个字符串对象最简单、快捷、有效、常用的方法就是直接赋值。<br/><br/>属性<br/><br/>length 用法：<字符串对象>.length；返回该字符串的长度。<br/><br/>方法<br/><br/>charAt() 用法：<字符串对象>.charAt(<位置>)；返回该字符串位于第<位置>位的单个字符。注意：字符串中的一个字符是第 0 位的，第二个才是第 1 位的，最后一个字符是第 length - 1 位的。<br/>charCodeAt() 用法：<字符串对象>.charCodeAt(<位置>)；返回该字符串位于第<位置>位的单个字符的 ASCII 码。<br/>fromCharCode() 用法：String.fromCharCode(a, b, c...)；返回一个字符串，该字符串每个字符的 ASCII 码由 a, b, c... 等来确定。<br/>indexOf() 用法：<字符串对象>.indexOf(<另一个字符串对象>[, <起始位置>])；该方法从<字符串对象>中查找<另一个字符串对象>（如果给出<起始位置>就忽略之前的位置），如果找到了，就返回它的位置，没有找到就返回“-1”。所有的“位置”都是从零开始的。<br/>lastIndexOf() 用法：<字符串对象>.lastIndexOf(<另一个字符串对象>[, <起始位置>])；跟 indexOf() 相似，不过是从后边开始找。<br/>split() 用法：<字符串对象>.split(<分隔符字符>)；返回一个数组，该数组是从<字符串对象>中分离开来的，<分隔符字符>决定了分离的地方，它本身不会包含在所返回的数组中。例如：'1&2&345&678'.split('&')返回数组：1,2,345,678。关于数组，我们等一下就讨论。<br/>substring() 用法：<字符串对象>.substring(<始>[, <终>])；返回原字符串的子字符串，该字符串是原字符串从<始>位置到<终>位置的前一位置的一段。<终> - <始> = 返回字符串的长度（length）。如果没有指定<终>或指定得超过字符串长度，则子字符串从<始>位置一直取到原字符串尾。如果所指定的位置不能返回字符串，则返回空字符串。<br/>substr() 用法：<字符串对象>.substr(<始>[, <长>])；返回原字符串的子字符串，该字符串是原字符串从<始>位置开始，长度为<长>的一段。如果没有指定<长>或指定得超过字符串长度，则子字符串从<始>位置一直取到原字符串尾。如果所指定的位置不能返回字符串，则返回空字符串。<br/>toLowerCase() 用法：<字符串对象>.toLowerCase()；返回把原字符串所有大写字母都变成小写的字符串。<br/>toUpperCase() 用法：<字符串对象>.toUpperCase()；返回把原字符串所有小写字母都变成大写的字符串。<br/><br/>Array 数组对象。数组对象是一个对象的集合，里边的对象可以是不同类型的。数组的每一个成员对象都有一个“下标”，用来表示它在数组中的位置（既然是“位置”，就也是从零开始的啦）。<br/><br/>数组的定义方法：<br/><br/>var <数组名> = new Array();<br/><br/>这样就定义了一个空数组。以后要添加数组元素，就用：<br/><br/><数组名>[<下标>] = ...;<br/><br/>注意这里的方括号不是“可以省略”的意思，数组的下标表示方法就是用方括号括起来。<br/><br/>如果想在定义数组的时候直接初始化数据，请用：<br/><br/>var <数组名> = new Array(<元素1>, <元素2>, <元素3>...);<br/><br/>例如，var myArray = new Array(1, 4.5, 'Hi'); 定义了一个数组 myArray，里边的元素是：myArray[0] == 1; myArray[1] == 4.5; myArray[2] == 'Hi'。<br/><br/>但是，如果元素列表中只有一个元素，而这个元素又是一个正整数的话，这将定义一个包含<正整数>个空元素的数组。<br/><br/>注意：JavaScript只有一维数组！千万不要用“Array(3,4)”这种愚蠢的方法来定义 4 x 5 的二维数组，或者用“myArray[2,3]”这种方法来返回“二维数组”中的元素。任意“myArray[...,3]”这种形式的调用其实只返回了“myArray[3]”。要使用多维数组，请用这种虚拟法：<br/><br/>var myArray = new Array(new Array(), new Array(), new Array(), ...);<br/><br/>其实这是一个一维数组，里边的每一个元素又是一个数组。调用这个“二维数组”的元素时：myArray[2][3] = ...;<br/><br/>属性<br/><br/>length 用法：<数组对象>.length；返回：数组的长度，即数组里有多少个元素。它等于数组里最后一个元素的下标加一。所以，想添加一个元素，只需要：myArray[myArray.length] = ...。<br/><br/>方法<br/><br/>join() 用法：<数组对象>.join(<分隔符>)；返回一个字符串，该字符串把数组中的各个元素串起来，用<分隔符>置于元素与元素之间。这个方法不影响数组原本的内容。<br/>reverse() 用法：<数组对象>.reverse()；使数组中的元素顺序反过来。如果对数组[1, 2, 3]使用这个方法，它将使数组变成：[3, 2, 1]。<br/>slice() 用法：<数组对象>.slice(<始>[, <终>])；返回一个数组，该数组是原数组的子集，始于<始>，终于<终>。如果不给出<终>，则子集一直取到原数组的结尾。<br/>sort() 用法：<数组对象>.sort([<方法函数>])；使数组中的元素按照一定的顺序排列。如果不指定<方法函数>，则按字母顺序排列。在这种情况下，80 是比 9 排得前的。如果指定<方法函数>，则按<方法函数>所指定的排序方法排序。<方法函数>比较难讲述，这里只将一些有用的<方法函数>介绍给大家。<br/><br/>按升序排列数字：<br/><br/>function sortMethod(a, b) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return a - b;<br/>&#125;<br/><br/>myArray.sort(sortMethod);<br/><br/>按降序排列数字：把上面的“a - b”该成“b - a”。<br/><br/>有关函数，请看下面。<br/><br/>Math “数学”对象，提供对数据的数学计算。下面所提到的属性和方法，不再详细说明“用法”，大家在使用的时候记住用“Math.<名>”这种格式。<br/><br/>属性<br/><br/>E 返回常数 e (2.718281828...)。<br/>LN2 返回 2 的自然对数 (ln 2)。<br/>LN10 返回 10 的自然对数 (ln 10)。<br/>LOG2E 返回以 2 为低的 e 的对数 (log2e)。<br/>LOG10E 返回以 10 为低的 e 的对数 (log10e)。<br/>PI 返回π（3.1415926535...)。<br/>SQRT1_2 返回 1/2 的平方根。<br/>SQRT2 返回 2 的平方根。<br/><br/>方法<br/><br/>abs(x) 返回 x 的绝对值。<br/>acos(x) 返回 x 的反余弦值（余弦值等于 x 的角度），用弧度表示。<br/>asin(x) 返回 x 的反正弦值。<br/>atan(x) 返回 x 的反正切值。<br/>atan2(x, y) 返回复平面内点(x, y)对应的复数的幅角，用弧度表示，其值在 -π 到 π 之间。<br/>ceil(x) 返回大于等于 x 的最小整数。<br/>cos(x) 返回 x 的余弦。<br/>exp(x) 返回 e 的 x 次幂 (ex)。<br/>floor(x) 返回小于等于 x 的最大整数。<br/>log(x) 返回 x 的自然对数 (ln x)。<br/>max(a, b) 返回 a, b 中较大的数。<br/>min(a, b) 返回 a, b 中较小的数。<br/>pow(n, m) 返回 n 的 m 次幂 (nm)。<br/>random() 返回大于 0 小于 1 的一个随机数。<br/>round(x) 返回 x 四舍五入后的值。<br/>sin(x) 返回 x 的正弦。<br/>sqrt(x) 返回 x 的平方根。<br/>tan(x) 返回 x 的正切。<br/><br/>Date 日期对象。这个对象可以储存任意一个日期，从 0001 年到 9999 年，并且可以精确到毫秒数（1/1000 秒）。在内部，日期对象是一个整数，它是从 1970 年 1 月 1 日零时正开始计算到日期对象所指的日期的毫秒数。如果所指日期比 1970 年早，则它是一个负数。所有日期时间，如果不指定时区，都采用“UTC”（世界时）时区，它与“GMT”（格林威治时间）在数值上是一样的。<br/><br/>定义一个日期对象：<br/><br/>var d = new Date;<br/><br/>这个方法使 d 成为日期对象，并且已有初始值：当前时间。如果要自定初始值，可以用：<br/><br/>var d = new Date(99, 10, 1);&nbsp;&nbsp;&nbsp;&nbsp; //99 年 10 月 1 日<br/>var d = new Date('Oct 1, 1999'); //99 年 10 月 1 日<br/><br/>等等方法。最好的方法就是用下面介绍的“方法”来严格的定义时间。<br/><br/>方法<br/><br/>以下有很多“g/set[UTC]XXX”这样的方法，它表示既有“getXXX”方法，又有“setXXX”方法。“get”是获得某个数值，而“set”是设定某个数值。如果带有“UTC”字母，则表示获得/设定的数值是基于 UTC 时间的，没有则表示基于本地时间或浏览期默认时间的。<br/><br/>如无说明，方法的使用格式为：“<对象>.<方法>”，下同。<br/><br/>g/set[UTC]FullYear() 返回/设置年份，用四位数表示。如果使用“x.set[UTC]FullYear(99)”，则年份被设定为 0099 年。<br/>g/set[UTC]Year() 返回/设置年份，用两位数表示。设定的时候浏览器自动加上“19”开头，故使用“x.set[UTC]Year(00)”把年份设定为 1900 年。<br/>g/set[UTC]Month() 返回/设置月份。<br/>g/set[UTC]Date() 返回/设置日期。<br/>g/set[UTC]Day() 返回/设置星期，0 表示星期天。<br/>g/set[UTC]Hours() 返回/设置小时数，24小时制。<br/>g/set[UTC]Minutes() 返回/设置分钟数。<br/>g/set[UTC]Seconds() 返回/设置秒钟数。<br/>g/set[UTC]Milliseconds() 返回/设置毫秒数。<br/>g/setTime() 返回/设置时间，该时间就是日期对象的内部处理方法：从 1970 年 1 月 1 日零时正开始计算到日期对象所指的日期的毫秒数。如果要使某日期对象所指的时间推迟 1 小时，就用：“x.setTime(x.getTime() + 60 * 60 * 1000);”（一小时 60 分，一分 60 秒，一秒 1000 毫秒）。<br/>getTimezoneOffset() 返回日期对象采用的时区与格林威治时间所差的分钟数。在格林威治东方的市区，该值为负，例如：中国时区（GMT+0800）返回“-480”。<br/>toString() 返回一个字符串，描述日期对象所指的日期。这个字符串的格式类似于：“Fri Jul 21 15:43:46 UTC+0800 2000”。<br/>toLocaleString() 返回一个字符串，描述日期对象所指的日期，用本地时间表示格式。如：“2000-07-21 15:43:46”。<br/>toGMTString() 返回一个字符串，描述日期对象所指的日期，用 GMT 格式。<br/>toUTCString() 返回一个字符串，描述日期对象所指的日期，用 UTC 格式。<br/>parse() 用法：Date.parse(<日期对象>)；返回该日期对象的内部表达方式。<br/><br/>全局对象<br/>全局对象从不现形，它可以说是虚拟出来的，目的在于把全局函数“对象化”。在 Microsoft JScript 语言参考中，它叫做“Global 对象”，但是引用它的方法和属性从来不用“Global.xxx”（况且这样做会出错），而直接用“xxx”。<br/><br/>属性<br/><br/>一早就说过了。<br/><br/>方法<br/><br/>eval() 把括号内的字符串当作标准语句或表达式来运行。<br/>isFinite() 如果括号内的数字是“有限”的（介于 Number.MIN_VALUE 和 Number.MAX_VALUE 之间）就返回 true；否则返回 false。<br/>isNaN() 如果括号内的值是“NaN”则返回 true 否则返回 false。<br/>parseInt() 返回把括号内的内容转换成整数之后的值。如果括号内是字符串，则字符串开头的数字部分被转换成整数，如果以字母开头，则返回“NaN”。<br/>parseFloat() 返回把括号内的字符串转换成浮点数之后的值，字符串开头的数字部分被转换成浮点数，如果以字母开头，则返回“NaN”。<br/>toString() 用法：<对象>.toString()；把对象转换成字符串。如果在括号中指定一个数值，则转换过程中所有数值转换成特定进制。<br/>escape() 返回括号中的字符串经过编码后的新字符串。该编码应用于 URL，也就是把空格写成“%20”这种格式。“+”不被编码，如果要“+”也被编码，请用：escape('...', 1)。<br/>unescape() 是 escape() 的反过程。解编括号中字符串成为一般字符串。<br/><br/>函数<br/>函数的定义 <br/><br/>所谓“函数”，是有返回值的对象或对象的方法。 <br/><br/>函数的种类 <br/><br/>常见的函数有：构造函数，如 Array()，能构造一个数组；全局函数，即全局对象里的方法；自定义函数；等等。 <br/><br/>自定义函数 <br/><br/>定义函数用以下语句： <br/><br/>function 函数名([参数集]) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;...<br/>&nbsp;&nbsp;&nbsp;&nbsp;[return[ <值>];]<br/>&nbsp;&nbsp;&nbsp;&nbsp;...<br/>&#125; <br/><br/>其中，用在 function 之后和函数结尾的大括号是不能省去的，就算整个函数只有一句。 <br/><br/>函数名与变量名有一样的起名规定，也就是只包含字母数字下划线、字母排头、不能与保留字重复等。 <br/><br/>参数集可有可无，但括号就一定要有。 <br/><br/>参数 是函数外部向函数内部传递信息的桥梁，例如，想叫一个函数返回 3 的立方，你就要让函数知道“3”这个数值，这时候就要有一个变量来接收数值，这种变量叫做参数。 <br/><br/>参数集是一个或多个用逗号分隔开来的参数的集合，如：a, b, c。 <br/><br/>函数的内部有一至多行语句，这些语句并不会立即执行，而只当有其它程序调用它时才执行。这些语句中可能包含“return”语句。在执行一个函数的时候，碰到 return 语句，函数立刻停止执行，并返回到调用它的程序中。如果“return”后带有<值>，则退出函数的同时返回该值。 <br/><br/>在函数的内部，参数可以直接当作变量来使用，并可以用 var 语句来新建一些变量，但是这些变量都不能被函数外部的过程调用。要使函数内部的信息能被外部调用，要么使用“return”返回值，要么使用全局变量。 <br/><br/>全局变量 在 Script 的“根部”（非函数内部）的“var”语句所定义的变量就是全局变量，它能在整个过程的任意地方被调用、更改。 <br/><br/>例 <br/><br/>function addAll(a, b, c) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return a + b + c;<br/>&#125;<br/><br/>var total = addAll(3, 4, 5); <br/><br/>这个例子建立了一个叫“addAll”的函数，它有 3 个参数：a, b, c，作用是返回三个数相加的结果。在函数外部，利用“var total = addAll(3, 4, 5);”接收函数的返回值。 <br/><br/>更多的时候，函数是没有返回值的，这种函数在一些比较强调严格的语言中是叫做“过程”的，例如 Basic 类语言的“Sub”、Pascal 语言的“procedure”。 <br/><br/>属性 <br/><br/>arguments 一个数组，反映外部程序调用函数时指定的参数。用法：直接在函数内部调用“arguments”。<br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] JavaScript 参考教程]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>