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

本文深入探讨了JavaScript中原型链的概念及其实现原理,并详细分析了基本数据类型与复杂数据类型的内存存储逻辑。此外,还介绍了构造函数的内存逻辑及其与原型的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   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

转载于:https://my.oschina.net/ynfsn/blog/750456

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值