<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    沙漠中的魚

    欲上天堂,先下地獄
    posts - 0, comments - 56, trackbacks - 0, articles - 119
      BlogJava :: 首頁 ::  :: 聯系 :: 聚合  :: 管理

            鐵桿的面向對象設計支持者會注意到,當使用prototype方法向JavaScript對象增加屬性和函數時,所增加的屬性和函數都是公用的,所有其他對象都能訪問。對于函數來說,這通常沒有問題,因為大多數函數都確實應當提供給外部客戶。但是對于屬性,面向對象設計的支持者就會指出,公有屬性違反了信息隱藏的概念,對象的屬性應當是私有的,因此外部客戶不能直接訪問。外部客戶只能通過公用可用的函數來訪問對象的私有屬性。

    對于JavaScript,同樣有可能創建外部客戶不能訪問的私有屬性,而只能通過對象的(公用)方法來訪問,但這一點很少有人知道。Douglas Crockford[3]提出了一種在JavaScript中創建私有屬性的方法。這種方法非常簡單,總結如下:

    l    私有屬性可以在構造函數中使用var關鍵字定義。

    l    私有屬性只能由特權函數(privileged function)公用訪問。特權函數就是在構造函數中使用this關鍵字定義的函數。外部客戶可以訪問特權函數,而且特權函數可以訪問對象的私有屬性。

    下面來考慮前一個示例中的Vehicle類。假設你想讓wheelCount和curbWeightIn- Pounds屬性是私有的,并只能通過公用方法訪問。新的Vehicle對象如代碼清單5-4所示。

    代碼清單5-4  重寫后的Vehicle對象

    function Vehicle() {

        
    var wheelCount = 4;

        
    var curbWeightInPounds = 4000;

        
    this.getWheelCount = function() {
            
    return wheelCount;
        }


        
    this.setWheelCount = function(count) {
            wheelCount 
    = count;
        }


        
    this.getCurbWeightInPounds = function() {
            
    return curbWeightInPounds;
        }


        
    this.setCurbWeightInPounds = function(weight) {
            curbWeightInPounds 
    = weight;
        }


        
    this.refuel = function() {
            
    return "Refueling Vehicle with regular 87 octane gasoline";
        }


        
    this.mainTasks = function() {
            
    return "Driving to work, school, and the grocery store";
        }

    }

     

    注意,wheelCount和curbWeightInPounds屬性都在構造函數中使用var關鍵字定義,這就使得這兩個屬性是私有屬性。屬性不再是公用的,如果想通過點記法訪問wheelCount屬性的值,如下:

    var numberOfWheels = vehicle.wheelCount;

    就會返回undefined,而不是wheelCount實際的值。

    由于屬性現在是私有的,因此需要提供能訪問這些屬性的公用函數。getWheelCount、setWheelCount、getCurbWeightInPounds和setCurbWeightInPounds函數就是作此使用的。現在Vehicle對象可以保證只能通過公用函數訪問私有屬性,因此滿足了信息隱藏的


     

    引用:http://book.csdn.net/bookfiles/11/100117056.shtml

    主站蜘蛛池模板: 精品少妇人妻AV免费久久洗澡| 免费a级黄色毛片| 亚洲欧美不卡高清在线| 成人永久免费高清| 两个人www免费高清视频| 亚洲男人的天堂在线播放| 成人免费无遮挡无码黄漫视频| 免费无码午夜福利片69| 在线免费观看亚洲| 99视频在线精品免费观看6| 久久精品免费网站网| 亚洲已满18点击进入在线观看| 亚洲精品偷拍视频免费观看| 亚州免费一级毛片| 九九视频高清视频免费观看| 亚洲影院在线观看| va亚洲va日韩不卡在线观看| 成人免费福利视频| 中文字幕免费在线播放| 亚洲乱码日产精品一二三| 久久久亚洲精品国产| 免费**毛片在线播放直播| 足恋玩丝袜脚视频免费网站| 一级做受视频免费是看美女| 亚洲同性男gay网站在线观看| 成人免费无码大片a毛片 | A片在线免费观看| 亚洲中文无码亚洲人成影院| 亚洲人成人无码网www电影首页| 午夜毛片不卡高清免费| 老汉精品免费AV在线播放| 国产va免费精品| 亚洲成a人无码亚洲成av无码| 亚洲精品第五页中文字幕| 亚洲人成网站在线观看播放| 国产大片91精品免费观看男同| 日日麻批免费40分钟日本的| 99精品视频免费| 国产成人无码免费网站| 国产成人 亚洲欧洲| 亚洲乱亚洲乱妇24p|