1、什麼是原型鏈機制 javascript
首先來看一段代碼:java
1 var person = {name : "Peter"}; 2 3 //Peter 4 console.log(person.name); 5 6 //undefined 7 console.log(person.age); 8 9 Object.prototype.age = 100; 10 11 //100 12 console.log(person.age);
爲何person.age 能夠訪問 Object.prototype.age 呢?chrome
這裏就要引出原型鏈了:網絡
當須要獲取一個對象的某個屬性或方法時,首先在對象自身查找該屬性,找不到的話,會沿着原型鏈向上查找,直到在某個原型中找到該屬性,若是到達原型鏈頂端依然找不到,則返回undefined.函數
2、原型鏈的做用學習
繼承實例:this
1 function Father(){ ...} 2 3 function Son(){...} 4 5 var father = new Father(); 6 7 //實現繼承,全部的son繼承自father對象 8 Son.prototype = father; 9 10 var son = new Son(); 11 12 //true 13 son instanceof Father;
使用原型來防止方法重複定義:spa
1 //使用這種方法來定義構造函數時,每次new Cat都從新建立了一個bite方法 2 function Cat(){ 3 this.name = "咪咪"; 4 function bite(){...} 5 } 6 7 //這種方式,在new Dog時,全部實例都用的同一個bite方法 8 function Dog(){ 9 this.name = "旺財"; 10 } 11 12 Dog.prototype.bite = function(){...}
3、理解原型鏈原理prototype
想要理解javascript的原型鏈機制,首先要有這些概念:code
ps:基本數據類型在執行方法時會被轉換爲對應的包裝對象(Number, String, Boolean)
接下來,就是原型鏈的核心了,請注意,核心是[[proto]]:
你們結合文字再看網絡上流傳的圖,進一步的理解原型鏈.