淺談:javascript的面向對象編程之具體實現

下面的javascript代碼都是須要使用jQuery插件來作的。但願你們能夠搭建好工做環境javascript

 

首先咱們來作一個練習:在一個刪除的超連接中添加一個提示信息,提示是否確認刪除。php

通常狀況下咱們都會這麼作css

<html>
  <head>
    <title>delete.html</title>
  </head>
  <script type="text/javascript">
      function deleteTest(){
          window.confirm("是否確認刪除");
      }
  </script>
  <body>
    This is my HTML page. <br>
  </body>
  <!-- 給a的超連接添加一個點擊事件 -->
  <a onclick="deleteTest()" href="">刪除</a>
</html>

可是若是如今整個項目中,有100個刪除的超連接,若是按照上面的方法,豈不是要寫100個onclick=deleteTest(),會累死人的html

能不能寫一個方法delete方法,而後每次在頁面上調用便可。答案是能夠的java

具體的代碼和分析以下node

delete.html的代碼jquery

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 2 <html>
 3   <head>
 4     <title>delete2.html</title>
 5     
 6     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 7     <meta http-equiv="description" content="this is my page">
 8     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 9     
10     <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
11 
12   </head>
13   <!-- 導入jQuery和自定義插件,jQuery的插件你們本身去下載 -->
14   <script type="text/javascript" src="../js/jquery-1.4.2.js"></script>
15   <script type="text/javascript" src="../js/js_delete.js"></script>
16   <body>
17   <!-- 能夠測試一些,每一個刪除的超連接都有了提示方法 -->
18     <a href="">刪除</a><br/>
19     <a href="">刪除</a><br/>
20     <a href="">刪除</a><br/>
21     <a href="">刪除</a><br/>
22     
23   </body>
24 </html>

js_delete.js的代碼以下c++

 1 /**
 2  * 既然是但願全部的頁面均可以使用刪除提示,那咱們乾脆作一個jQuery的插件
 3  * 在引入jQuery的同時,引入咱們本身的js文件,這樣頁面就可使用了
 4  * 這裏咱們使用的全局方法來定義
 5  * 
 6  * 說明:
 7  * 一、在jQuery插件中,使用的是帶參數的json格式的參數,這樣能夠下降耦合性,
 8  *         固然你也能夠直接寫$(this).text()=="刪除" 可是這樣耦合性較高
 9  * 二、this
10  *         這裏的this指的是a標籤對象
11  * 三、爲何先要給a標籤unbind("click")(解除click綁定),而後在綁定點擊事件
12  *         緣由:首先咱們不肯定a標籤是否有其餘綁定事件,由於多個事件的疊加或形成錯誤
13  *             這樣寫的會避免一些沒必要要的麻煩。
14  *         $(this).bind("click",function(){
15                     點擊時候發生的事件均可以子啊這個函數裏面寫
16                 });
17  */
18 (function(jQuery){//形參是jQury
19     $.deleteTest = function(json){//自定義jquery的插件,參數是使用帶有json的參數
20         $("a").each(function(){//獲取指定頁面面上全部的超連接標籤(a)
21             if($(this).text()==json.condision){//判斷的條件
22                 $(this).unbind("click");//首先給刪除超連接去除點擊時間
23                 $(this).bind("click",function(){//給刪除超連接添加點擊時間
24                     return window.confirm(json.message);//顯示判斷框
25                 });
26             }
27         });
28     };
29     
30 })(jQuery);//實參也是jQuery
31 
32 $().ready(function(){//在頁面加載完成之後馬上執行
33     $.deleteTest({//傳遞json格式的參數
34         condision:"刪除",//傳入執行的條件
35         message:"您肯定要刪除嗎?"//傳入提示信息
36     });
37     //只要把這個js導入相應的頁面,那麼就能夠對任何刪除的超連接進行提示
38 });

經過上面的例子咱們能夠發現,咱們能夠經過製做jQuery插件的方法,來對頁面上的元素進行操做,而不須要在頁面上寫onclick=""ajax

真正的javascript架構,在頁面上是不多能夠看到js代碼的。js代碼通常都封裝在js文件裏面。數據庫

 

下面再來作一個練習:

寫一個全選的方法,讓他在這個項目中,對全部引入該js的頁面都有效

詳細的代碼和分析以下:

selectAll.html代碼以下

 1 <html>
 2   <head>
 3     <title>selectAll.html</title>
 4   <script type="text/javascript" src="../js/jquery-1.4.2.js"></script>
 5   <!-- 只要導入這個js文件,全部的全選對應名字,就能夠擁有全選功能了
 6    -->
 7   <script type="text/javascript" src="../js/js_selectAll.js"></script>
 8   <body>
 9       <input name="selectAll" type="checkbox"/>全選<br/>
10       
11     <input name="demoCheckboxs" type="checkbox"/>java<br/>
12     <input name="demoCheckboxs" type="checkbox"/>php<br/>
13     <input name="demoCheckboxs" type="checkbox"/>c++<br/>
14     <input name="demoCheckboxs" type="checkbox"/>.net<br/>
15     <input name="demoCheckboxs" type="checkbox"/>c<br/>
16   </body>
17 </html>

js_selectAll.js代碼以下

 1 /*
 2  * 首先咱們分析一下:全選是針對某個對象的,在某個對象有個全選按鈕,點擊按鈕
 3  * 把下面的複選框都設置成爲被選中,全部製做jQuery插件應該是一個原型方法
 4  */
 5 
 6 (function(jQuery){
 7     $.fn.selectAll=function(checkboxName){
 8         //誰調用此函數,this表明誰
 9         if($(this).attr("checked")){//判斷全選按鈕是否是被選中,
10             //若是被選中,把名稱爲checkboxName的複選框所有選中
11             $("input[name='"+checkboxName+"']").attr("checked",true);
12         }else{
13             //若是沒有被選中,把名稱爲checkboxName的複選框所有不選中
14             $("input[name='"+checkboxName+"']").attr("checked",false);
15         }
16     };
17 })(jQuery);
18 
19 
20 $().ready(function(){
21     //給全選按鈕添加點擊事件
22     $("input[name='selectAll']").unbind("click");
23     $("input[name='selectAll']").bind("click",function(){
24         $(this).selectAll("demoCheckboxs");//傳入須要被全選的複選框的name屬性
25     });
26 });

 

經過上面兩個練習,咱們能夠得出,在寫js代碼的時候,必定要考慮重用性。不能看到一個功能,就直接onclick什麼的,那樣代碼的複用率極低,也不利於後期的維護

 

下面進入咱們js的面向對象的編程介紹

咱們下面的案例使用了jQuery的一個插件zTree ,若是但願看懂所有代碼,須要學習zTree的知識,若是僅僅須要看懂思想,只有看懂架構便可

需求:有一個權限樹,管理員,在爲用戶添加權限,點擊設置權限,下面顯示隱藏div和用戶名。異步查詢數據庫裏面的用戶權限,若是擁有所有權限,把全選按鈕選中

點擊權限按鈕能夠全選全部權限。點擊保存,向服務器發送請求,保存數據到數據庫。還能夠設置用戶的權限,添加或者修改。全程使用無刷新的方式進行操做!(使用ajax異步的方式發送請求)

 

頁面示例:

 

共總有以下權限:

點擊設置權限按鈕

 

顯示在下面隱藏的div、用戶名,權限樹等信息

想想這個應該怎麼去作:

若是使用之前js函數的寫法,感受就是一個很累並且工廠量很大的事情,咱們可使用面向對象的方法來思考問題

咱們把點擊設置權限之後的操做分爲:初始化(包含初始化事件、初始化數據),對象的操做行爲、數據保存等

 

首先咱們給出頁面jsp代碼

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ include file="/WEB-INF/jsp/comm/common.jsp"%>
<script language="javascript" src="${pageContext.request.contextPath}/js/user-list.js"></script>
<script language="javascript" src="${pageContext.request.contextPath}/js/jquery-checkbox.js"></script>
<script language="javascript" src="${pageContext.request.contextPath}/js/jquery-ztree-2.5.js"></script>
<script language="javascript" src="${pageContext.request.contextPath}/js/privilege_practice2.js"></script>
<link rel="stylesheet" type="text/css" href="zTreeStyle/zTreeStyle.css">


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>用戶列表</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<div id="Title_bar">
    <div id="Title_bar_Head"> 
        <div id="Title_Head"></div>
        <div id="Title"><!--頁面標題-->
            <img border="0" width="13" height="13" src="${pageContext.request.contextPath }/css/images/title_arrow.gif"/> 用戶管理
        </div>
        <div id="Title_End"></div>
    </div>
</div>

<div id="MainArea">
    <table cellspacing="0" cellpadding="0" class="TableStyle">
       
        <!-- 表頭-->
        <thead>
            <tr align=center valign=middle id=TableTitle>
                <td width="100">用戶名</td>
                <td width="100">所屬部門</td>
                <td>職位</td>
                <td>相關操做</td>
            </tr>
        </thead>
        
        <!--顯示數據列表-->
        <tbody id="TableData" class="dataContainer" datakey="userList">
        <s:iterator>
            <tr class="TableDetail1 template">
                <td><s:property value="username"/></td>
                <s:hidden name="uid"></s:hidden>
                <td><s:property value="department.dname"/></td>
                <td>
                    <s:iterator value="posts">
                        <s:property value="pname"/>
                    </s:iterator>
                 </td>
                <td><a onClick="return delConfirm()" href="list.html">刪除</a>
                    <a href="saveUI.html">修改</a>
                    <s:a>設置權限</s:a>
                </td>
            </tr>
       </s:iterator>
        </tbody>
    </table>
    
     <div id="TableTail">
        <div id="TableTail_inside">
            <a href="userAction_addUI.action"><img src="${pageContext.request.contextPath }/css/images/createNew.png" /></a>
        </div>
    </div>
    
    <div class="ItemBlock_Title1" id="userTitle" style="display: none;"><!-- 信息說明 --><div class="ItemBlock_Title1">
            <img border="0" width="4" height="7" src="${pageContext.request.contextPath }/css/blue/images/item_point.gif"/>
            <div id="userImage"></div>
        </div>
    <div class="ItemBlock_Title1" id="privilegeTitle" style="display: none;"><div class="ItemBlock_Title1">
            <img border="0" width="4" height="7" src="${pageContext.request.contextPath }/css/blue/images/item_point.gif" />選擇權限</div> 
        </div>
        
        <!-- 表單內容顯示 -->
        <div class="ItemBlockBorder" style="display: none;" id="privilegeContent">
            <div class="ItemBlock">
                <table cellpadding="0" cellspacing="0" class="mainForm">
                    <!--表頭-->
                    <thead>
                        <tr align="LEFT" valign="MIDDLE" id="TableTitle">
                            <td width="300px" style="padding-left: 7px;">
                                <!-- 若是把全選元素的id指定爲selectAll,而且有函數selectAll(),就會有錯。由於有一種用法:能夠直接用id引用元素 -->
                                <input type="checkbox" id="allchecked" />
                                <label for="cbSelectAll">全選</label>
                            </td>
                        </tr>
                    </thead>
                   
                       <!--顯示數據列表-->
                    <tbody id="TableData">
                        <tr class="TableDetail1">
                            <!-- 顯示權限樹 -->
                            <td>
                                <ul id='privilegeTree' class="tree">
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
        <!-- 表單操做 -->
        <div id="InputDetailBar">
            <image id="savePrivilege" src="${pageContext.request.contextPath }/css/images/save.png"/>
        </div>
</div>

</body>
</html>

給出js的框架代碼(只有框架,沒有具體實現):下面代碼就是使用js面向對象編程,把全部的定義都放在privilege對象中

 最後只須要調用privilege.init.initEvent();便可完成對內容的實現
 1 var privilege ={
 2         /**
 3          * 初始化的東西所有在init裏面完成
 4          */
 5         init:{
 6             
 7             /**
 8              * 初始化事件,全部的初始化事件都在initEvent完成
 9              */
10             initEvent:function(){
11                 
12             },
13 
14             /**
15              * 初始化數據,對數據的初始化操做所有在initData完成
16              */
17             initData:function(){
18                 
19             },
20             
21             
22         },
23         
24         
25         /**
26          * 全部功能的操做都是在這裏面完成
27          */
28         pFunction:{
29             
30             /**
31              * 全部和權限樹有關的操做都在privilegeTree裏面完成
32              */
33             privilegeTree:{
34                 
35                 /**
36                  * loadPrivilegeTree:完成對權限樹的加載
37                  */
38                 loadPrivilegeTree:function(){
39                     
40                 },
41                 
42                 
43                 /**
44                  * controlCheckBox:完成對樹規則控制
45                  */
46                 controlCheckBox:function(){
47                     
48                 },
49                 
50                 
51                 /**
52                  * checkAll:完成對樹的全選操做
53                  */
54                 checkAll:function(){
55                     
56                 },
57                 
58                 /**
59                  * savePrivilege:完成對樹權限的保存
60                  */
61                 savePrivilege:function(){
62                     
63                 }
64             },
65             
66             /**
67              * userOption:完成全部的用戶功能的實現
68              */
69             userOption:{
70                 /**
71                  * 顯示用戶名的操做
72                  */
73                 showUsername:function(){
74                     
75                 }
76             },
77             
78             /**
79              * divOption:對div的全部操做
80              */
81             divOption:{
82                 /**
83                  * 顯示div的全部操做
84                  */
85                 showDiv:function(){
86                     
87                 }
88             }
89             
90         },
91         
92         data:{
93             
94         }    
95 };

$().ready(function(){
    privilege.init.initEvent();
});

 

對上面代碼的部分實現:

  1 var privilege ={
  2         /**
  3          * 初始化的東西所有在init裏面完成
  4          */
  5         init:{
  6             
  7             /**
  8              * 初始化事件,全部的初始化事件都在initEvent完成
  9              */
 10             initEvent:function(){
 11                 //點擊設置權限按鈕的事件
 12                 $("a").each(function(){
 13                     if($(this).text()=="設置權限"){
 14                         $(this).unbind("click");
 15                         $(this).bind("click",function(){
 16                             /**
 17                              * 在點擊設置權限的時候,首先要初始化數據
 18                              * 一、顯示div
 19                              * 二、顯示用戶名
 20                              * 三、加載權限樹
 21                              * 
 22                              * 說明:使用nitData.call(param),能夠把
 23                              * initData的這個函數的調用者設置爲param
 24                              * 
 25                              * 在這裏進行調用,而後在在每一個具體的方法裏面進行實現,
 26                              * 作到了面向對象的變成,這是javascript面向對象的核心
 27                              */
 28                             
 29                             privilege.init.initData.call(this);
 30                             privilege.pFunction.divOption.showDiv();
 31                             privilege.pFunction.userOption.showUsername();
 32                             privilege.pFunction.privilegeTree.loadPrivilegeTree();
 33                             return false;
 34                         });
 35                     }
 36                 });
 37 
 38 
 39                 /**
 40                  * 全選按鈕事件
 41                  */
 42                 $("#allchecked").unbind("click");
 43                 $("#allchecked").bind("click",function(){
 44                     privilege.pFunction.privilegeTree.checkAll();
 45                 });
 46                 
 47                 /**
 48                  * 保存權限事件
 49                  */
 50                 $("#savePrivilege").unbind("click");
 51                 $("#savePrivilege").bind("click",function(){
 52                     privilege.pFunction.privilegeTree.savePrivilege();
 53                 });
 54                 
 55             },
 56 
 57             /**
 58              * 初始化數據,對數據的初始化操做所有在initData完成
 59              */
 60             initData:function(){
 61                 /*
 62                  * 使用jQuery賦值
 63                  * $(this).parent().siblings("td:first").text()
 64                  * 表示調用該方法的節點的父節點的兄弟節點中第一個的文本值
 65                  * 也就是<td><s:property value="username"/></td>
 66                  * $(this).parent().siblings("input[type='hidden']:first").val();
 67                  * 表示:調用此方法的節點的父節點的兄弟節點類型爲input type=hidden的第一個的值
 68                  * 也就是    <s:hidden name="uid"></s:hidden>
 69                  * 
 70                  * 下面是具體的jsp頁面的對應值
 71                  * <s:iterator>
 72                         <tr class="TableDetail1 template">
 73                             <td><s:property value="username"/></td>
 74                             <s:hidden name="uid"></s:hidden>
 75                             <td><s:property value="department.dname"/></td>
 76                             <td>
 77                                 <s:iterator value="posts">
 78                                     <s:property value="pname"/>
 79                                 </s:iterator>
 80                              </td>
 81                             <td><a onClick="return delConfirm()" href="list.html">刪除</a>
 82                                 <a href="saveUI.html">修改</a>
 83                                 <s:a>設置權限</s:a>
 84                             </td>
 85                         </tr>
 86                        </s:iterator>
 87                  */
 88                 var username = $(this).parent().siblings("td:first").text();
 89                 var uid = $(this).parent().siblings("input[type='hidden']:first").val();
 90                 //給data數據中數據賦值
 91                 privilege.data.user.uid = uid;
 92                 privilege.data.user.username=username;
 93                 
 94             },
 95             
 96             
 97         },
 98         
 99         
100         /**
101          * 全部功能的操做都是在這裏面完成
102          */
103         pFunction:{
104             
105             /**
106              * 全部和權限樹有關的操做都在privilegeTree裏面完成
107              */
108             privilegeTree:{
109                 
110                 /**
111                  * loadPrivilegeTree:完成對的加載
112                  */
113                 loadPrivilegeTree:function(){
114                     
115                 },
116                 
117                 
118                 /**
119                  * controlCheckBox:完成對樹規則控制
120                  */
121                 controlCheckBox:function(){
122                     
123                 },
124                 
125                 
126                 /**
127                  * checkAll:完成對樹的全選操做
128                  */
129                 checkAll:function(){
130                     
131                 },
132                 
133                 /**
134                  * savePrivilege:完成對樹權限的保存
135                  */
136                 savePrivilege:function(){
137                     
138                 }
139             },
140             
141             /**
142              * userOption:完成全部的用戶功能的實現
143              */
144             userOption:{
145                 /**
146                  * 顯示用戶名的操做
147                  */
148                 showUsername:function(){
149                     $("#userImage").text(privilege.data.user.username);
150                 }
151             },
152             
153             /**
154              * divOption:對div的全部操做
155              */
156             divOption:{
157                 /**
158                  * 顯示div的全部操做
159                  */
160                 showDiv:function(){
161                     $("#userTitle").show();
162                     $("#privilegeTitle").show();
163                     $("#privilegeContent").show();
164                 }
165             }
166             
167         },
168         
169         
170         /**
171          * 全部須要的數據均可以在這裏面進行定義
172          */
173         data:{
174             user:{//user數據
175                 uid:'',
176                 username:''
177             }
178         }    
179 };
180 
181 $().ready(function(){
182     privilege.init.initEvent();
183 });

若是是瞭解一下思想,看到這裏就能夠了,下面的代碼須要jQuery的ZTree知識。

上述代碼的所有實現:說明: $.post()由服務器調用,是異步的,也就是說,想使用$.post()裏面的數據,必須保證他被服務器調用已經完成

var privilege ={
        /**
         * 全部初始化的操做
         */
        init:{
            /**
             * 全部初始化的事件
             */
            initEvent:function(){
                //設置權限的click事件
                $("a").each(function(){
                    if($(this).text()=="設置權限"){
                        $(this).unbind("click");
                        $(this).bind("click",function(){
                            /**
                             * 一、顯示全部div
                             * 二、動態顯示用戶名
                             * 三、加載動態權限樹
                             */
                            var hobj = this;
                            //privilege.init.initData(hobj);
                            //設置initData()方法的調用對象就是this,這樣就不用傳遞參數了
                            privilege.init.initData.call(this);
                            privilege.pFunction.divOption.showDiv();//顯示全部的div
                            privilege.pFunction.userOption.showUsername();//動態顯示用戶名
                            privilege.pFunction.privilegeTree.loadPrivilegeTree();//加載權限樹
                            //判斷全選按鈕是否須要全選不能在這,由於在這樹還不肯定是否已經加載
                            return false;
                        });
                    }
                });
                
                /**
                 * 全選按鈕事件
                 */
                $("#allchecked").unbind("click");
                $("#allchecked").bind("click",function(){
                    privilege.pFunction.privilegeTree.checkAll();
                });
                
                /**
                 * 保存權限事件
                 */
                $("#savePrivilege").unbind("click");
                $("#savePrivilege").bind("click",function(){
                    privilege.pFunction.privilegeTree.savePrivilege();
                });
                
            },
            
            /**
             * 全部初始化的數據
             */
            initData:function(){
                //alert($(hobj).parent().siblings("td:first").text());
                //alert($(hobj).parent().siblings("input[type='hidden']:first").val());
                var username = $(this).parent().siblings("td:first").text();
                var uid = $(this).parent().siblings("input[type='hidden']:first").val();
                privilege.data.user.uid=uid;
                privilege.data.user.username=username;
                
            }
        },
        
        /**
         * 按照功能區域的劃分
         */
        pFunction:{
            
            privilegeTree:{//對全部權限樹的操做
                zTree:'',
                setting: {
                    isSimpleData: true,
                    treeNodeKey: "mid",
                    treeNodeParentKey: "pid",
                    showLine: true,
                    root: {
                        isRoot: true,
                        nodes: []
                    },
                    checkable: true,
                    //設置點擊規則
                    checkType:{
                        "Y":"p",
                        "N":"s"
                    },
                    
                    callback:{
                        beforeChange:function(treeId, treeNode){//在點擊樹的複選框以前觸發
                            //在點擊樹的複選框以前,改變規則
                            privilege.pFunction.privilegeTree.controlCheckBox({
                                "Y":"p",
                                "N":"s"
                            });
                        },
                    
                        /**
                         * 節點點擊的時候觸發,若是已經全選了,那就把全選按鈕選中,不然全選按鈕不選中
                         * @param treeId
                         * @param treeNode
                         */
                        change:function(treeId, treeNode){
                            if(privilege.pFunction.privilegeTree.zTree.getCheckedNodes(false).length!=0){//若是沒有所有選中
                                $("#allchecked").attr("checked", false);
                            }else{
                                $("#allchecked").attr("checked", true);
                            }
                        }
                        
                        
                    
                    }
                },
                    
                /**
                 * 顯示權限樹
                 */
                loadPrivilegeTree:function(){
                    var params={
                            uid:privilege.data.user.uid
                    };
                    
                    $.post("privilegeAction_showPrivilegesByUid",params,function(data){
                        alert(data);
                        privilege.pFunction.privilegeTree.zTree=$("#privilegeTree").zTree(privilege.pFunction.privilegeTree.setting,data.privilegeList);
                        /**
                         * 全選按鈕是否被選中要在點擊設置權限以後顯示出來,
                         * 可是又須要在樹加載以後,全部這裏是判斷全選按鈕是否選中的最佳位置
                         */
                        if(privilege.pFunction.privilegeTree.zTree.getCheckedNodes(false).length!=0){//若是沒有所有選中
                            $("#allchecked").attr("checked", false);
                        }else{
                            $("#allchecked").attr("checked", true);
                        }
                    });
                },
                
                /**
                 * 對權限樹複選框的控制
                 */
                controlCheckBox:function(checkType){//設置setting的屬性
                    //獲取當前樹的setting
                    var setting = privilege.pFunction.privilegeTree.zTree.getSetting();
                    //前一個setting是屬性,後一個數傳遞的值
                    setting.checkType = checkType;
                    privilege.pFunction.privilegeTree.zTree.updateSetting(setting);
                },
                /**
                 * 針對某個用戶的保存權限
                 */
                savePrivilege:function(){
                    var checkedNodes = privilege.pFunction.privilegeTree.zTree.getCheckedNodes(true);
                    var mids="";
                    var length = checkedNodes.length;
                    for(var i=0;i<length;i++){
                        if(i<length-1){
                            mids = mids+checkedNodes[i].mid+",";
                        }else{
                            mids = mids+checkedNodes[i].mid;
                        }
                    }
                    var params={
                            uid:privilege.data.user.uid,
                            mids:mids,
                            aa:[1,2,3]
                    };
                    $.post("privilegeAction_savePrivilege.action",params,function(data){
                        //alert(data);
                    });
                },
            
                /**
                 * 全選複選框的實現
                 */
                checkAll:function(){
                    /**
                     * 在點擊全選的時候,設置下新的規則,讓全選公共能夠實現
                     * 爲何能夠設置,由於只有當樹加載出來的時候,你纔會進行全選,因此,能夠保證樹加載
                     */
                    privilege.pFunction.privilegeTree.controlCheckBox({
                        "Y":"ps",
                        "N":"ps"
                    });
                    if($("#allchecked").attr("checked")){
                        privilege.pFunction.privilegeTree.zTree.checkAllNodes(true);
                    }else{
                        privilege.pFunction.privilegeTree.zTree.checkAllNodes(false);
                    }
                }
            
            },
            
            //用戶的全部操做
            userOption:{
                /**
                 * 動態顯示用戶名,把用戶名顯示到div中
                 */
                showUsername:function(){
                    $("#userImage").text(privilege.data.user.username);
                }
            },
            
            //div的操做
            divOption:{
                /**
                 * 顯示全部的div
                 */
                showDiv:function(){
                    //把隱藏域變成顯示
                    $("#userTitle").show();
                    $("#privilegeTitle").show();
                    $("#privilegeContent").show();
                }
            }
        },
        
        /**
         * json對象的數據封裝
         */
        data:{
            user:{//封裝user數據
                uid:'',
                username:''
            }
        }
};

$().ready(function(){
    privilege.init.initEvent();
});

總結:javascript面向對象的編程就是把一個大的問題分解,在一個方法裏面調用各個方法,在下面各個方法裏面進行實現,全程都在一個對象privilege裏面

這裏只是學一下思想,若是要理解所有的代碼,還須要jQuery的zTree知識。

以上就是javascript面向對象編程的思想,但願對你們有用

相關文章
相關標籤/搜索