<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 :: 首頁 ::  :: 聯系 :: 聚合  :: 管理

    前面已經了解到,JavaScript中也可以實現私有屬性,而且JavaScript也能像C++和Java一樣支持基于類的繼承方法。為了展示這些是怎樣實現的,下面說明如何轉換前面使用Vehicle、SportsCar和CementTruck對象的示例,從而使用信息隱藏和繼承的新模式。代碼清單5-5列出了新的對象定義。
    代碼清單5-5 classicalInheritance.js

    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";
        }

    }

     
    function SportsCar() {
        
    this.refuel = function() {
            
    return "Refueling SportsCar with premium 94 octane gasoline";
        }

     
        
    this.mainTasks = function() {
            
    return "Spirited driving, looking good, driving to the beach";
        }

    }

     
    function CementTruck() {
        
    this.refuel = function() {
            
    return "Refueling CementTruck with diesel fuel";
        }

     
        
    this.mainTasks = function() {
            
    return "Arrive at construction site, extend boom, deliver cement";
        }

    }


             需要注意,SportsCar和CementTruck對象沒有定義自己的wheelCount和curbWeightInPounds屬性,也沒有相關的存取函數,因為這些屬性和函數會從Vehicle對象繼承。
    與前面一樣,需要一個簡單的HTML頁面來測試這些新對象。代碼清單5-6列出了測試這些新對象的HTML頁面。要特別注意createInheritance函數,看看如何使用這個函數在Vehicle和SportsCar對象之間以及Vehicle和CementTruck對象之間創建繼承關系。還要注意describe函數有所修改,以試圖直接訪問wheelCount和curbWeightInPounds屬性。這樣做會返回一個undefined值。
    代碼清單5-6 classicalInheritance.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
    >
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Classical Inheritance in JavaScript</title>
     
    <script type="text/javascript" src="classicalInheritance.js"></script>
     
    <script type="text/javaScript">
    function createInheritance(parent, child) {
        
    var property;
        
    for(property in parent) {
            
    if(!child[property]) {
                child[property] 
    = parent[property];
            }

        }

    }

     
    function describe(vehicle) {
        
    var description = "";
        description 
    = description + "Number of wheels (via property): "
                                                              
    + vehicle.wheelCount;
        description 
    = description + "\n\nNumber of wheels (via accessor): "
                                      
    + vehicle.getWheelCount();
        description 
    = description + "\n\nCurb Weight (via property): "
                                      
    + vehicle.curbWeightInPounds;
        description 
    = description + "\n\nCurb Weight (via accessor): "
                                     
    + vehicle.getCurbWeightInPounds();
        description 
    = description + "\n\nRefueling Method: " + vehicle.refuel();
        description 
    = description + "\n\nMain Tasks: " + vehicle.mainTasks();
        alert(description);
    }

     
    function createVehicle() {
        
    var vehicle = new Vehicle();
        describe(vehicle);
    }

     
    function createSportsCar() {
        
    var sportsCar = new SportsCar();
        createInheritance(
    new Vehicle(), sportsCar);
        sportsCar.setCurbWeightInPounds(
    3000);
        describe(sportsCar);
    }

     
    function createCementTruck() {
        
    var cementTruck = new CementTruck();
        createInheritance(
    new Vehicle(), cementTruck);
        cementTruck.setWheelCount(
    10);
        cementTruck.setCurbWeightInPounds(
    10000);
        describe(cementTruck);
    }

    </script>
    </head>
     
    <body>
      
    <h1>Examples of Classical Inheritance in JavaScript</h1>
     
      
    <br/><br/>
      
    <button onclick="createVehicle();">Create an instance of Vehicle</button>
     
      
    <br/><br/>
      
    <button onclick="createSportsCar();">Create an instance of SportsCar</button>
     
      
    <br/><br/>
      
    <button onclick="createCementTruck();">Create an instance of CementTruck</button>
     
    </body>
    </html>

    分別點擊頁面上的各個按鈕會得到圖5-17所示的結果。正如所料,試圖直接訪問私有屬性就會返回undefined。

    圖5-17 創建Vehicle、SportsCar和CementTruck對象,并使用describe函數描述它們的結果。私有屬性不能直接訪問,見警告框中的undefined值

     

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

    主站蜘蛛池模板: 亚洲第一男人天堂| 91成人在线免费视频| 日韩精品极品视频在线观看免费| 毛片大全免费观看| 久久亚洲AV午夜福利精品一区| 亚洲精品女同中文字幕| 久久精品免费一区二区| 国产亚洲精品岁国产微拍精品| 手机永久免费的AV在线电影网| 最新中文字幕电影免费观看| 亚洲国产夜色在线观看| 免费网站看av片| 婷婷亚洲久悠悠色悠在线播放| 手机在线毛片免费播放| 国产无限免费观看黄网站| 又黄又爽的视频免费看| 久久乐国产综合亚洲精品| 亚洲无码视频在线| 一出一进一爽一粗一大视频免费的 | 免费a级毛片在线观看| 免费无码VA一区二区三区| 国产成人亚洲综合a∨| 大学生高清一级毛片免费| 亚洲高清一区二区三区| 亚洲精品成人网站在线观看| 天天摸天天碰成人免费视频| 无码日韩精品一区二区三区免费| 亚洲AV人人澡人人爽人人夜夜 | 亚洲人成依人成综合网| 最近2019中文字幕免费直播| 美女被免费网站在线视频免费| 亚洲精品97久久中文字幕无码| 天堂在线免费观看| 久久久久亚洲精品无码蜜桃| 国产四虎免费精品视频| 国产精品亚洲自在线播放页码| 免费视频中文字幕| 边摸边吃奶边做爽免费视频99| 亚洲午夜电影一区二区三区| 亚洲国产精品一区二区成人片国内| 蜜桃AV无码免费看永久|