`

javaScript 之深层次继承[利用原型链object.prototype]

阅读更多

javaScript中对于对象之间的深层次继承.

//扩充 通过原型链prototype实现多層次對象继承

var ClassA = function(){
    ClassA.prototype.name = 'jack';   
    ClassA.prototype.set_name = function(name){
        this.name = name;
    };
    ClassA.prototype.get_name = function(){
          return this.name;
    };     
}

var ClassB = function(){
        ClassB.prototype = new ClassA();
        ClassB.prototype.age = 25;
}
var ClassC = function(){
        ClassC.prototype = new ClassB();
        ClassC.prototype.color = 'red';
        ClassC.prototype.get_message = function(){
        return 'name :'+this.get_name()+"\n"+"age :"+this.age+"\n"+"color :"+this.color;
    }
}
//ClassB()和ClassC()必須要運行 不可缺少 如果沒有執行這兩步操作則會報錯
//錯誤信息為 c.set_name is not a function TypeError
//對於這點我個人認為 ClassB和ClassC 是函數,需要編譯后才可以對它進行調用
//哪位兄台假如知道這裡的緣由,請留言或評論,謝謝
ClassB(); //必不可少
ClassC();//必不可少

var c = new ClassC();
c.set_name('michael');
console.log(c.get_message());
//結果為:
//name :michael
//age :25
//color :red

 

//通過for/in 對函數對象的屬性方法進行分離,并分別打印出來
function Traversal(obj){
    var array1=[],array2=[],array3=[];
    var array4=[];
    for (var name  in obj){
        //對函數對象的屬性進行分析
        if(typeof obj[name]== 'function'){
                array3.unshift(name);
        }else if(typeof obj[name] == 'function'){
                array2.unshift(name);
        }else if(typeof obj[name] !== 'function' || typeof obj[name] !=='object'){
            array1.unshift(name);
        }//保存所有的信息
           array4.unshift(name);
            
    };//返回一個多維數組
    return new Array(array1,array2,array3,array4);
}


function test(){
    
    var array = Traversal(new ClassC());
     var myArray = new Array();
     for(var i=0;i<array.length;i++){
           myArray = array[i];
 //           console.log("this is array["+i+"] \n" +myArray +'\n 數組的長度為:' +myArray.length );  
            if(myArray.length>0){  
                console.log('----------------------------'+'\n'+"this is array["+i+"] \n" );  
                for(var j=0;j<myArray.length;j++){
                   console.log(myArray[j]+"\n");
                }
              
          }  
    } 
}
test();







 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics