简析面向对象中的继承,原型链,闭包之原型链

   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
相关文章
相关标签/搜索