先不管上圖,先來看以下**:
function person()結合**和上圖,可以清楚得看到,將某個建構函式的原型物件替換為另乙個建構函式的例項物件後,最終的指向(圖中紅線部分,就像鏈條一樣,層層鏈結)。這就是原型鏈的基本概念。person.prototype.saypersonname = function()
function student()
student.prototype = new person(); // student 的原型物件替換為 person 的例項物件 參考上圖中右邊第一條紅線
student.prototype.saystudentname = function()
var student1 = new student();
student1.saypersonname(); // person
student1.saystudentname(); // student
所有引用型別預設都繼承了 object,這也是通過原型鏈實現的。
instanceof
console.log(student1 instanceof student); // truestudent1 是 student, person, object 三者中任意乙個型別的例項。console.log(student1 instanceof person); // true
console.log(student1 instanceof object); // true
isprototypeof()
console.log(student.prototype.isprototypeof(student1)); // true在子型別建構函式的內部借用超型別建構函式。console.log(person.prototype.isprototypeof(student1)); // true
console.log(object.prototype.isprototypeof(student1)); // true
function person()優點:可以傳遞引數。function student()
var student1 = new student();
student1.friends.push('lucy');
console.log(student1.friends); // ["mike", "lily", "melinda", "lucy"]
var student2 = new student();
console.log(student2.friends); // ["mike", "lily", "melinda"]
function person(name)缺點原型鏈和借用建構函式的組合function student(name)
var student1 = new student('john');
console.log(student1.name); // john
var student2 = new student('gray');
console.log(student2.name); // gray
function person(name)借助原型基於已有的物件建立新物件。person.prototype.sayname = function()
function student(name, age)
student.prototype = new person();
student.prototype.constructor = student;
student.prototype.sayage = function()
var student1 = new student('mike', 28);
student1.sayname(); // mike
student1.sayage(); // 28
function object(obj)或fn.prototype = obj;
return new fn();
}var obj =
}var newobj = object(obj);
newobj.name = 'john';
console.log(newobj.name); // john
newobj.sayname(); // john
return clone; // 返回這個物件
}組合繼承的缺點:呼叫兩次超型別建構函式。
function person(name)改造:person.prototype.sayname = function()
function student(name, age)
student.prototype = new person(); //
student.prototype.constructor = student;
student.prototype.sayage = function()
function object(obj)畫了一張關係圖,僅供參考fn.prototype = obj;
return new fn();
}function inheritprototype(subtype, supertype)
function person(name)
person.prototype.sayname = function()
function student(name, age)
inheritprototype(student, person);
student.prototype.sayage = function()
var student1 = new student('mike', 28);
以上內容**:
繼承(學習筆記) 《高階教程》
先不管上圖,先來看以下 function person person.prototype.saypersonname function function student student.prototype new person student 的原型物件替換為 person 的例項物件 參考上圖中右...
php學習筆記 高階教程
var dump arr 列印陣列 print r arr 列印陣列,但不列印型別 unset arr 0 刪除陣列中第乙個元素 is array 判斷是不是陣列 sort arr 排序,從小到大,重新排序,下標不變 ksort arr 按照鍵名重新排序 大寫字母優於小寫字母 count arr 統...
《C 高階教程》學習筆記14
第二十一,二十二天 昨天咖啡喝濃了頭居然發熱了 今天繼續學習 9.1.3 格式字串 例 double d 13.45 int i 45 console.writeline d,i 常見格式說明符 c 數字型別 特點地區的貨幣值 d 只用於整數型別 一般的整數 e 數字型別 科學計數法 f 數字型別 ...