Javascript s02

s02

 

 

 

1.包装对象

         在调用基本数据类型的变量的方法或属性时,JS会自动将该变量包装成对象

         每一种数据类型都有他的构造函数调

         用完后,又变回原来的样子.

         属性为只读的,不改变原始对象的值

        

         普通对象上调用方法,则有可能会改变原始变量的值

        

         null  和 undefined 没有包装对象

        

2.对象的比较,值传递与引用传递

         JS的'=='和PHP的'==='一样       

         在JS中,如果new出来的两个对象,属性相等,用==去比较,是false.

        

         值传递

         string number boolean null undefined

         引用传递

         object function array

         数组也是object

        

        

3.数据类型的转换

                   Number() :将传入的内容转为整数或小数,只能进行10进制的转换,不能出现非法尾字符

                   parseInt() :将传入的内容转为整数.

                   以0x开头的parseInt(),将按16进制的解析.

                   parseFloat() :

                   前导空格,都会自动丢掉

数据类型转换

======================================================================================

                            转为字符串     数字                   布尔值              对象

undefined         "undefined"     NaN          false          throws TypeError

null            "null"                 0                false          throws TypeError

--------------------------------------------------------------------------------

true           "true"                1                                            new Boolean(true)

false          "false"               0                                            new Boolean(false)

--------------------------------------------------------------------------------

"" 空字符串                      0                false                   new String("")

"1.2" 数字字符串           1.2             true           new String("1.2")

"one"                                    NaN          true                    new String("one")

--------------------------------------------------------------------------------

0                "0"                                                  false          new Number(0)

-0               "0"                                                  false          new Number(-0)

NaN          "NaN"                                            false          new Number(NaN)

Infinity      "Infinity"                    true           new Number(Infinity)

-Infinity    "-Infinity"                   true           new Number(-Infinity)

1 非0正数     "1"                                        true           new Number(1)

-1 非0负数    "-1"                              true           new Number(-1)

--------------------------------------------------------------------------------

{}任意对象       注1           注1                    true

[]空数组  ""               0                          true

[9]单元素数组         "9"            9                true

[1,2]          注2           NaN                    true

["a"]          注2           NaN                    true

function(){}       注1           NaN          true

 

                  

                  

3.运算符

 

一元运算符

++  --  + - ~ ! delete  typeof void                 

----------------------------------------

二元运算符

*  /  %

+  -

+ 字符串连接符

-----------------------------------------

<< 

>> 

>>> 

------------------------------------------

>   <   >=  <=

instanceof

in

------------------------------------------

==

!=

===

!==

-------------------------------------------

&

^

|

&&

||

?:

--------------------------------------------

=

+=  -=  *=  /=  &=

^=  |=  <<=  >>=  >>>=

--------------------------------------------

,

--------------------------------------------      

 

         a.字符串连接与加法运算

                   只有两个数相加,结果才是数

                   任何东西与字符串相加,结果就是字符串,字符串优先

 

                   对象如何转为普通值

         b.调用  valueOf() 或 toString()方法;

        

         c.运算符的结合性

                   1. +号是从左往右运算

                            alert(1+2+'3'); //string 33

                            因为是二元运算符

          

                   2. =赋值运算,从右往左

                            var i=j=7;  //结果全是7

                           

                   3. 一元,三元运算符是从右往左

                   var a=ture;

                   var b=ture;

                   var c=fales;

                  

                   var x=a?b:c?false:2;  //从右往左

                  

                   4.自增运算

                            变量的自增或自减,不是整个表达式结束后,才发生,而是使用一次,就自增(自减);

        

                   5.NaN特殊的数

                            自己不等于自己的

                            if(a!=a){}

                            isNaN()

        

                   6.boolean

                                     if(true=1)  //true

                                     if(true=2) //false

                                     会把boolean值转为数字

                                    

                   7.delete     //php中的unset

                  

                   8.in    

                  

                   9.instanceof

                   var arr=new Array();

                   alert(arr instanceof Object); //true 数组是对象的实例

                  

                   10. 逗号运算符

                   从左往右运算

                   var j=1;

                   for(var i=0;i<3;j=i,i++){

                            document.write(j);

                   }

                   输出 101;

                  

                   11. ~ 按为非   按为非

                   //10进制的5,二进制是多少 101

                   10进制的-6转化为内存的二进制是多少

                  

                   源码

                   10000000 00000000 00000000 00000110

                   反码

                   11111111 11111111 11111111 11111001

                   补码  反码+1

                   11111111 11111111 11111111 11111010

                  

                  

4.语言结构              

 

         if(){}eles{}

         switch(){}   要注意,里面case用的是===来判断的

         while(){}

         do while()

         for

         **for...in...   in  foreach  只有key没有value 数组就是下标,对象就是属性

         //数组就是下标

         var arr=[4,6,78];

         for(var i in arr){

                   document.write(i);   //相当与php $key

                  

                   document.write(arr[i])   //相当与php $value

        

         }

        

         //对象就是属性

         var obj={name:'张三',age:18};

         for(var j in obj){

                   //document.write(obj.j);

                   document.write(j);  //只能拿到属性名

         }

                  

         尽量少用for...in...

 

         要求用for循环遍历数组      

        

        

5.try ...catch ...finally

        

         finally中的代码始终被执行

        

         function test(){

                   try{

                  

                  

6.

         只有索引数组,下标是整数的,没有php类似的关联数组

         []       空数组

         [,,]    几个成员?2个

         [1,,11] 几个?3个

         new Array();

         new Array(5);  这是什么意思?每个成员的值都是unidefined;

         new Array(4,5,6);    这是什么意思,代表数组有三个成员,值分别是4,5,6,下标分别是0,1,2;

         没有下标越界,访问不存在的下标,将得到undefined

        

         var arr=[2,4];

         arr['a']=5;

        

         alert(arr.length);   //2

        

         document.write(arr.a);  //变成对象的普通属性了

         document.write(arr['a']);

 

         arr['12']=6;       会转化为整数,和php一样

         arr[7.0]=6;                 会转化为整数,和php一样

         arr['7.0']=6;   字符串的

         arr[7.4]=6;     变成字符串的

        

         在最后加一个成员

         arr[arr.length]=值

         arr.push(值);

        

         不支持多维数组,但是值就是一个数组

                  

        

posted @ 2013-05-30 19:53  午时的海  阅读(165)  评论(0编辑  收藏  举报