簡析面向對象中的繼承,原型鏈,閉包之原型鏈

   1. 理解原型鏈函數

     我理解中的原型鏈的東西簡單的說就是一條鏈式結構的對象。就是說對象有原型對象,原型對象也是對象,因此,原型對象也有原型對象,這樣一環扣一環,就造成了一條鏈式結構,叫作:原型鏈。spa

    此時的原型繼承理解: 任何對象都有一條原型鏈存在,所謂的繼承就是經過任何手段,改變原型鏈的層次結構, 那麼,對象經過訪問原型鏈中的屬性或者方法,從而實現繼承。prototype

 2.下面看看原型鏈的結構:對象

var o = new Object();// 原型鏈結構// o -> Object.prototype -> null

var arr = []; // new Array()// 原型鏈結構// arr -> Array.prototype -> Object.prototype -> null//

 3.簡單數據的內存邏輯    

基本數據類型:存儲的是數據自己。

複雜數據類型(引用類型):存儲的是數據的引用,
也就是說:

引用類型有兩個存儲區域,一個存儲數據自己,一個存儲引用

   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
相關文章
相關標籤/搜索