1. 理解原型鏈函數
我理解中的原型鏈的東西簡單的說就是一條鏈式結構的對象。就是說對象有原型對象,原型對象也是對象,因此,原型對象也有原型對象,這樣一環扣一環,就造成了一條鏈式結構,叫作:原型鏈。spa
此時的原型繼承理解: 任何對象都有一條原型鏈存在,所謂的繼承就是經過任何手段,改變原型鏈的層次結構, 那麼,對象經過訪問原型鏈中的屬性或者方法,從而實現繼承。prototype
2.下面看看原型鏈的結構:對象
var o = new Object();// 原型鏈結構// o -> Object.prototype -> null var arr = []; // new Array()// 原型鏈結構// arr -> Array.prototype -> Object.prototype -> null//
基本數據類型:存儲的是數據自己。 複雜數據類型(引用類型):存儲的是數據的引用, 也就是說: 引用類型有兩個存儲區域,一個存儲數據自己,一個存儲引用
1. 基本數據類型繼承
var num = 123; var str = "abc"; var isTrue = false;
2 .複雜數據類型(存儲的是引用)內存
// 1var arr1 = [1, 3, 5];// 2var o1 = { num: 123 };// 3var o2 = o1;// 4o2 = {name: "cc"}; // 5var arr2 = [1, 3, 5, {num: 456}];// 6var o1 = {name: "cc", age: 31};var car1 = { name: "jeep" };var o2 = o1;o2.car = car1; // 7var car = {name: "Benz"};var o1 = {name: "chuanchuan", c: car};
4.構造函數的內存邏輯原型鏈
function Person() {} // Person、Person.prototype、Object.prototype、Object 之間的關係
構造函數和原型的一些結論:原型
1 只要是函數 就有 prototype 屬性 2 函數的屬性 prototype 是一個對象類型 3 屬性 prototype 是一個含有 constructor 和 __proto__ 屬性的對象 4 constructor 屬性就是當前構造函數 5 函數的 prototype 屬性所表示的對象繼承自 Object.prototype