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