1. 程式人生 > >JS(七) 繼承與引用

JS(七) 繼承與引用

  1. function logs(obj){document.write(obj+"<br/>");}   //列印log日誌  
  2. //繼承  
    //繼承可以通過原型鏈來實現  
    //直譯器會在物件中查詢該屬性,
    //如果沒有找到,則在其內部物件 prototype 物件上搜索,  
    //由於 prototype 物件與物件本身的結構是一樣的,因此這個過程會一直回溯到發現該屬性,則呼叫該屬性,否則,報告一個錯誤。  
    function Base(){  
        var name = "josn";  
        this.baseFunc = function(){  
            logs("base behavior");  
        }  
        this.getName = function(){  
            return name;  
        }  
    }  
    function Middle(){  
        this.middleFunc = function(){  
            logs("middle behavior");  
        }  
    }  
    Middle.prototype = new Base();//原型上進行繼承  
    var mid = new Middle();  
    mid.middleFunc();   //自有函式  
    mid.baseFunc();    //繼承自父類 Base  
  3. //引用  
    //     引用始終指向最終的物件,而並非引用本身  
    var obj = {};//空物件  
    var ref = obj;//引用  
    obj.name = "objectA";  
    logs(ref.name);;//objectA ref跟著添加了name屬性   
    obj.name = "objectB"; //修改原始的那個物件會影響到其引用上,這一點也應該注意。  
      
    obj = ["one","two","three","d"];  
    obj.name = "objectC";  
    logs(ref.name);/*objectA   ref還指向原來的物件*/logs(obj.length);//4 陣列的長度  
    //obj 只是對一個匿名物件的引用,所以,ref 並非指向它,當 obj 指向另一個數組物件時  
    //可以看到,引用 ref 並未改變