2008年09月02日

2006年12月06日
8、 对象:javascript中的对象可以作为关联数组使用,因为它们能够将任意的数值和任意的字符串关联起来。如果采用这种方式使用对象.那么要访问对象的属性就要采取不同的语法.即使用一个由中括号封闭起来的、包含所需属性名的字符串,例如:
   <HTML>
 <HEAD>
 <TITLE> New Document </TITLE>
 <META NAME="Generator" CONTENT="EditPlus">
 </HEAD>
 <BODY>
   <INPUT TYPE="submit" name="test" value="提交">
   <script language="javascript">
     document.write(test["name"]);
     document.write(test["value"]);
   </script>
 </BODY>
</HTML>
其中test["name"]这种访问方式和test.name所起到的效果是一样的。
9、 对象直接量(也称为初始化对象) 是由一个列表构成的,这个列表的元素是用冒号分隔的属性/值对.元素之间用逗号隔开,整个列表封闭在大括号之内。例如:Var point={x:2.3,y:5.6},对象直接量也可以嵌套,如:
Var rectangle={uppLeft:{x:2.3,y:5.6},lowerRight{x:4,y:7}},对象直接量并不一定是常量,也可以是表达式。
10、 Javascript不支持多位数组,不过它的数组元素还可以是数组。
11、    JavaScript的关链字null是一个特殊的值、它表示的是“无值”。null常常被看作是特殊    数据类型Null的唯—合法值。但有时它被看作对象类型的一个特殊值,即代表“无对象”的值。无论在哪种情况下。Null都是个唯一值、有别于所有其他的值。如果一个变量的值为null、那么你就应该知道它的值不是有效的对象、数组、数字、字符串和布尔值。
Undefined表示一个没有定义或者声明了没有赋值的变量或者属性。但是大多数实际使用中,可以将两者看作是相同的。如果对象my的prop属性并不存在,那么my.prop= =null这句话返回值为true。
如果要区分它们两个,那么可以使用typeof运算符,对于没有赋制的变量、没有定义的属性或者变量,返回值是undefined,看看下面的例子:
Var temp;
Type=typeof temp;                 //返回值为undefined
而对于null,返回值却是“object”,例:
Type=typeof null;                  //返回值为object
有一种新的运算符“= = =”可以区分undefined和null,例如:
Var temp;
If(temp= = =null)                    //返回值为false
12、    Date对象:Date对象中,月份是从0开始的,所以12月份对应数字11,例如:声明2006年12月23日,new Date(2006,11,23);注意是11而不是12。
13、    正则表达式:在javascript语言中,正则表达式由RegExp对象来表示,语法上和Perl语言一样。一对斜线之间的文本就构成了正则表达式直接量。例如:\^Html\
14、    变量:javascript中如果没有显式地声明一个变量,那么javascript会隐式为你声明。但是需要注意的是,隐式声明的变量总是全局变量,即使你只是在一个函数体内使用它。所以建议声明变量时,使用var。
15、    函数中声明的所有变量,无论是在那里声明的,在整个函数中它们都是有定义的。例如:
Function test(o)
{
 Var i=0;      //在整个函数体内,i都是有意义
 If(typeof= =”object”)
{
 Var j=0;   //j不仅在块中有定义,在整个函数也都有定义
 For(var k=0;k<10;k++)    //k在整个函数体内也都有意义
 {
    Document.write(k);
}
Document.write(k);      //k仍然有意义,输出10
}
Document.write(j);        //j仍然有意义
}
注意下面的函数声明:
Var scope=”globle”;
Function f()
{
 Alert(scope);        //此处相当于在函数体内又隐式声明了一个变量,但是没有初始化,所以值应该为”undefined”,而不是globle
 Var scope=”local”;    //这里相当于对scope进行初始化
 Alert(scope);        //输出值为”local”
}
所以我们应该养成良好的习惯,把函数中的变量集中放在函数开头声明。
16、基本类型和引用类型:基本类型包括数值,布尔值,null和未定义的值;引用类型包含对象,数组和函数。基本类型和引用类型的区别用下面的例子就可以说明:
第一个例子,基本类型:
Var a=3.14;     //声明一个变量并赋值
Var b=a;       //把这个变量的值复制到一个新的变量中
a=4;          //修改原始变量的值
alert(b);       //此时输出3.14,复制是值,所以不变化
第二个例子,引用类型:
Var a={1,2,3};     //初始化一个变量作为数组的对象引用
Var b=a;          //把这个引用(注意是引用,而不是数值)复制给一个新的对象
a[0]=99;          //修改原始变量的值
alert(b);          //因为b和a引用同一个对象,所以当a中的元素变化时,b也变化
   注意:字符串是一个特例。因为它具有可变的大小,所以显然它不能被直接存储在具有固定大小的变量中。出于效率的原因,我们希望Javascript只复制对字符串的引用而不是字符串的内容。但另一方面.字符串在许多方面都和原始类型的表现相似。而字符串是不可变的这一事实(即没有办法改变一个字符串值的内容)使得字符串是原始类型还是引用类型的问题更加令人费解。无论是将字符串看作是表现与原始类型相似的不可变引用类型.还是将它看作使用引用类型的内部功能实现的原始类型,结果部是一样的。
17、在javascript中,变量基本上和对象的属性是一样的。函数体内的局部变量会覆盖函数体外同名的全局变量。
18、运算符:在javascript中’a’*’b’是不合法的,但是’3’*’4’却是合法的,因为javascript会根据情况进行转换,所以’3’*’4’的结果是数字12,而不是字符串’12’。
如果你对运算符的优先级了解不是很深的话,最好用括号来表示你的意图。
19、“=”表示赋值或者得到; “= =”表示等于,可能只是值上的相等;“= = =”表示完全相等,不仅仅是值,包含类型等其他。NaN不等于任何,包括自身。
“!=”和“!= =”检测的情况恰好与“= =”和“= = =”相反。如果两个值相等,“!=”返回false,否则返回true,如果两个值完全相等,“!= =”返回false,否则返回true。