JS(七) 繼承與引用
阿新 • • 發佈:2018-11-02
- function logs(obj){document.write(obj+"<br/>");} //列印log日誌
- //繼承
//繼承可以通過原型鏈來實現
//直譯器會在物件中查詢該屬性,
//如果沒有找到,則在其內部物件 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 - //引用
// 引用始終指向最終的物件,而並非引用本身
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 並未改變