1. 程式人生 > >jQuery學習筆記(2)——jQuery物件 & 靜態物件和例項物件 & each()方法

jQuery學習筆記(2)——jQuery物件 & 靜態物件和例項物件 & each()方法

四、jQuery物件——偽陣列

當我們呼叫jQuery核心函式時,無論傳入的引數是函式、字串或DOM元素,最終都會返回一個jQuery物件。

jQuery物件可以看作是一個“偽陣列”。所謂“偽陣列”,就是像陣列一樣含有"length"屬性,並且含有索引從0到length-1的子項。

如下所示,建立三個div元素:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="jquery-1.12.4.js"></script>
    <script>
        $(function(){
            var $div = $("div");
            console.log($div);
        })
    </script>
</head>
<body>
    <div>div1</div>
    <div>div2</div>
    <div>div3</div>    
</body>
</html>

F12進入控制檯檢視,如下圖所示。 返回的jQuery物件中包括索引0到2的3個div元素,並且含有值為3的length屬性。是不是和陣列很相似?

在這裡插入圖片描述

五、靜態方法和例項方法

  1. 靜態方法 jQuery中的靜態方法就是直接新增給類的方法,靜態方法必須通過類名呼叫。

    <script>
        //定義一個類
        function ClassA(){
        }
        //給類ClassA新增一個靜態方法
        ClassA.staticMethod = function(){
            alert("這是一個靜態方法");
        }
        //通過類名呼叫靜態方法
        ClassA.staticMethod();
    </script>
    
  2. 例項方法 jQuery中的例項方法是新增給類的原型的方法,例項方法必須通過類的例項呼叫。

    <script>
        //定義一個類
        function ClassA(){
        }
        //給類ClassA的原型新增一個例項方法
        ClassA.prototype.instanceMethod = function(){
            alert("這是一個例項方法");
        }
        //建立一個例項(建立一個物件)
        var a = new ClassA();
        //通過例項呼叫例項方法
        a.instanceMethod();
    </script>
    

六、each方法——與原生js中forEach()方法的區別

  1. 原生js中的forEach()方法

    <script>
        //定義一個數組
        var arr = [1,3,5,7,9];
        //遍歷列印陣列(注意傳參順序)
        //第一個引數:遍歷到的元素
        //第二個引數:遍歷到的索引
        arr.forEach(function(value,index) {
            console.log(index,value);
        });
    </script>
    

    開啟瀏覽器F12檢視控制檯,如下圖所示,左邊為陣列中的索引,右邊為陣列中各個元素的值。 在這裡插入圖片描述

    注意: 原生js中的forEach()方法只能遍歷陣列,不能遍歷“偽陣列”。

    <script>
        //定義一個“偽陣列”(物件)
        var obj = {0:1,1:3,2:5,3:7,4:9};
        //遍歷列印“偽陣列”
        obj.forEach(function(value,index) {
            console.log(index,value);
        });
    </script>
    

    開啟瀏覽器F12檢視控制檯,如下圖所示,控制檯會返回報錯資訊,表示沒有這個方法。

    在這裡插入圖片描述

  2. jQuery中的each()方法 使用jQuery中的each()靜態方法遍歷陣列

    <script>
        //定義一個數組
        var arr = [1,3,5,7,9];
        //遍歷列印陣列(注意傳參順序)
        //第一個引數:遍歷到的索引
        //第二個引數:遍歷到的元素
        $.each(arr,function(index,value){
            console.log(index,value);
        })
    </script>
    

    開啟瀏覽器F12檢視控制檯,如下圖所示,左邊為陣列中的索引,右邊為陣列中各個元素的值。

    在這裡插入圖片描述

    那麼,jQuery中的each()方法能不能遍歷“偽陣列”呢?

    <script>
        //定義一個“偽陣列”(物件)
        var obj = {0:1,1:3,2:5,3:7,4:9};
        //遍歷列印“偽陣列”(物件)
        //第一個引數:遍歷到的索引
        //第二個引數:遍歷到的元素
        $.each(obj,function(index,value){
            console.log(index,value);
        })
    </script>
    

    開啟瀏覽器F12檢視控制檯,如下圖所示,左邊為陣列中的索引,右邊為陣列中各個元素的值。

    在這裡插入圖片描述

    結論: jQuery中的each()方法,不僅能夠遍歷陣列,同時也能夠遍歷“偽陣列”(即物件)。