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

原创
2016/09/22 23:27
阅读数 235

   1. 理解原型链

     我理解中的原型链的东西简单的说就是一条链式结构的对象。就是说对象有原型对象,原型对象也是对象,所以,原型对象也有原型对象,这样一环扣一环,就形成了一条链式结构,叫做:原型链。

    此时的原型继承理解: 任何对象都有一条原型链存在,所谓的继承就是通过任何手段,改变原型链的层次结构, 那么,对象通过访问原型链中的属性或者方法,从而实现继承。

 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
展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部