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();