<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

    主站蜘蛛池模板: 一个人免费观看日本www视频| 国产精品高清视亚洲精品| 一级毛片大全免费播放下载 | 国产香蕉免费精品视频| 亚洲a一级免费视频| 一级毛片免费视频| 亚洲精品在线播放| 成年在线观看网站免费| 亚洲卡一卡二卡乱码新区| 午夜a级成人免费毛片| 成人婷婷网色偷偷亚洲男人的天堂| 日韩一级在线播放免费观看| 相泽南亚洲一区二区在线播放| 亚洲国产成人精品女人久久久| 久青草视频在线观看免费| 国产l精品国产亚洲区在线观看| 99精品视频免费观看| 亚洲av无码片在线观看| 免费a级黄色毛片| 日本高清不卡aⅴ免费网站| 亚洲最大成人网色| 天天天欲色欲色WWW免费| 羞羞视频免费网站日本| 亚洲av日韩av不卡在线观看| 国产福利在线观看免费第一福利| 亚洲成av人在线观看网站| 久久精品国产亚洲AV不卡| 99国产精品视频免费观看| 亚洲a级片在线观看| 亚洲精品WWW久久久久久| 亚欧日韩毛片在线看免费网站| 亚洲中文字幕无码一去台湾 | 亚洲AV无码专区国产乱码不卡| 亚洲成网777777国产精品| 成人A片产无码免费视频在线观看| 亚洲一区二区三区不卡在线播放| www.亚洲色图| 99热这里有免费国产精品| 色偷偷尼玛图亚洲综合| 亚洲AV日韩AV高潮无码专区| 国产高清免费在线|