开始学Javascript啦。

1、Javascript执行顺序
  1.1、Javascript是页面执行顺序,从上到下逐行执行的
   实例1:
   <script type="text/javascript">
    alert(new Date().toLocaleDateString());//显示本地当前时间
   </script>
   实例2:
  1.2、事件 onclick……
   <!--这里的href=""不是事件,是属性-->
   <a href="javascript:alert('Show me')">Show Me</a>
  
2、变量类型
  2.1、声明变量都是用 var ,动态类型。
  2.2、命名规则:以字母、下划线或$开头,中间可以包括字母、数字、下划线或$。
  2.3、可以双引号,也可以单引号声明变量。如:var name='cy' 或name="cy"
  2.4、不用声明直接使用的变量是全局变量。如:name="yi";
  
   1、默认如果直接在script标签中定义变量,则属于“全局作用域范围”(全局执行环境),即属于window对象。
   2、全局作用域范围的变量直到网页关闭或浏览器关闭时才释放资源
   3、一个页面中的多个<script>标签中的变量可以互相访问。
   4、JS有垃圾回收机制,会定时对可释放资源的变量回收。将变量设置为null则表示可以被回收了。

  2.5、null与undefined区别:
    1、undefined表示一个未知状态
     (1)、声明了,但是没有初始化该变量,变量的值是一个未知状态(undefined)
     (2)、方法没有明确的返回值时,返回值是一个undefined
     (3)、对未声明的变量使用typeof运算符时,显示为undefined
    2、null表示尚未存在的对象,可以为变量赋值为null,用null初始化变量,清除变量内容,释放内存
    3、undefined==null,结果为true,但含义不同。
    4、undefined===null 结果为false,先判断类型,然后判断值。
  2.6、JavaScript中判断已声明变量、参数是否初始化(可用)的方法
    1、if(typeof(x)!='undefined' && x!=null){ alert('可用')};
    2、if(x) {alert('变量可用')};  null、undefined、0都认为是false
    推荐用最后一种方法。但如果x有可能没有声明,则只能用typeof判断(否则会报错)
    
3、函数
  3.1、不需要声明返回值类型、参数类型。函数定义以function开头:function Fun(name,age){};
  3.2、JavaScript中不像C#中那样要求所有路径都有返回值,没有返回值就是undefined。
  3.3、javascript中没有方法重载。
   实例(实现方法重载可以通过arguments参数数组实现)
    function Fun()
    {
     for(var i=0;i<arguments.length;i++)
     {
      document.write(arguments[i]);
     }
    }
    Fun("hello",22,true);//实现调用
    
  3.4、匿名函数:
    实例(匿名函数的使用)
    var a=function(x1,x2){ return x1+x2;};
    alert(a(2,4));
    
4、面向对象
  4.1、函数就是对象,对象就是函数。
  4.2、方法直接调用为函数,使用new 为对象。
   实例1(一般方法写一个Person对象)
    function Person(){}; //创建一个Person对象
    var p=new Person(); //创建对象
    p.Name='张三';//动态语言,直接属性赋值
    p.Age=21;
    p.SayHello=function(){ alert('Hello!')};//对象方法
    alert(p.Name);//获取对象属性
    alert(p['Age']);另一种动态访问属性的方式
    
   实例2(闭包创建对象,使用this)

    function Person(Name,Age)
    {
     this.Name=Name;//为属性赋值
     this.Age=Age;
     this.ShowMe=function()
     {
      alert('大家好啊!,我叫'+this.Name+',今年'+this.Age+'岁。');
     }
    }
    var cy=new Person('caoyi',22);
    cy.ShowMe();

 

5、String字符串
  5.1、length属性:获取字符串的字符个数。   如:var str='我是abc';alert(str.length);//结果为 5
  5.2、charAt(index)方法:获取指定索引位置的字符(索引从0开始)。如:alert(str.charAt(1));//结果为 '是'
  5.3、indexOf(‘字符串’,startIndex)方法:获取指定字符串第一次出现的位置。startIndex表示从第几个开始搜索。
  5.4、split(‘分隔符’,limit);//根据分隔符将一个字符串返回为一个数组。
  5.5、substr(startIndex,len)//从startIndex开始,截取len个字符。
  5.6、substring(startIndex,stopIndex)//从startIndex开始,截取到stopIndex位置(不包括stopIndex所在的字符)。
  5.7、toUpperCase()//转换大写、toLowerCase();//转换小写。
  5.8、match()、replace()、search()方法,正则表达式相关。

6、Array数组
  6.1、Array对象就是动态数组,类似于c#中的ArrayList、Hashtable等的综合
  6.2、无需预先定义大小,可以动态创建
  
  实例1(创建数组)

   var names=new Array();
   names[0]='Jim';
   names[1]='tom';
   var arr=['China',2008,true];//简化赋值

 

  实例2(合并数组)

   function MySplit(arr,spe)
   {
    if(!spe)
    {
     spe=',';//如果为空,默认用,分割
    }
    var str=arr[0];
    for(var i=1;i<arr.length;i++)
    {
     str=str+spe+arr[i];
    }
    return arr;
   }
   

 

7、RegExp正则表达式
  7.1、创建方法
    1、创建RegExp对象,如:var regex = new RegExp("\\d{5}");没有@,\\代表\ 。
    2、/表达式/,如:var reg=/\d+/;此时不用考虑转义字符。
  7.2、RegExp对象的方法
    1、test(str):判断字符串str是否匹配正则表达式,相当于IsMatch。
     例如:var regex=/.+@.+/; alert(regex.test("123@qq.com"));
    2、exec(str):进行搜索匹配,返回值为匹配结果,没有找到返回null。
  7.3、String对象中的正则表达式
    1、str.match(regex),相当于调用exec
     实例1:var s="abc@163.com";

       var regex=/(.+)@(.+)/;
       var match=s.match(regex);//匹配获得结果集
       alert(RegExp.$1+",服务器:"+RegExp.$2);
       

 

     实例2(获取分组中的数据):

       var arr=str.match(/(.+)@(.+)/);
       //获取分组中的数据
       alert(RegExp.$1);
       for (var i = 0; i < arr.length; i++) {
        alert(arr[i]);
         }

 

    2、str.replace(/正则表达/,strR);
     实例1(字符替换):

         // g全局匹配
         var str2="北京    北京  北京";
         alert(str2.replace(/北京/g,"武汉"));
         //i忽略大小写
         var s="AAAbbbaacsda";
         alert(s.match(/a+/gi));

 

8、Json对象 
   8.1、Json定义:
     Json对象是一个无序的'名称/值'对集合。一个对象以{开始,}结束。每个名称后跟一个:名称/值对之间用,分割。
   实例(Json数据的创建和访问)
      

  <script type="text/javascript">
      //创建json
      var json = { "name": "张三", "age": 18, "sex": "男" };
      //获取值
      alert(json["name"]);
      //遍历
      for (var key in json) {
       alert(key+"==="+json[key]);
      }
      //创建Json
      var json2 = { "class1": [
            { "name": "张三", "age": 18, "sex": "男" },
            { "name": "张三1", "age": 28, "sex": "男" },
            { "name": "张三2", "age": 48, "sex": "男" },
            { "name": "张三3", "age": 58, "sex": "男" },
            { "name": "张三4", "age": 16, "sex": "男" }
            ],
       "class2": [
            { "name": "张三", "age": 18, "sex": "男" },
            { "name": "张三1", "age": 28, "sex": "男" },
            { "name": "张三2", "age": 48, "sex": "男" },
            { "name": "张三3", "age": 58, "sex": "男" },
            { "name": "张三4", "age": 16, "sex": "男" }
            ]
      }

      var arr = json2.class2;
      for (var i = 0; i < arr.length; i++) {
       alert(arr[i].name);
       }
     </script>

 

posted @ 2012-07-22 20:37  hello*boy  阅读(237)  评论(0编辑  收藏  举报