文档章节

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

JSON_P
 JSON_P
发布于 2016/09/22 23:27
字数 462
阅读 34
收藏 1

   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

© 著作权归作者所有

JSON_P
粉丝 7
博文 18
码字总数 9688
作品 0
闵行
前端工程师
私信 提问
每个JavaScript工程师都应懂的33个概念

摘要: 基础很重要啊! 原文:33 concepts every JavaScript developer should know 译文:每个 JavaScript 工程师都应懂的33个概念 作者:stephentian Fundebug经授权转载,版权归原作者所有...

Fundebug
2018/10/30
0
0
浅谈闭包,原型链,面向对象

闭包: 百度百科: 官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 闭包的特点:   1.作为一个函数变量的一...

尚有
2018/01/11
0
0
JavaScript开发者应懂的33个概念

简介 这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。 本篇文章是参照 @leonardomso 创立,英文版项目地址在这里。 ...

大灰狼的小绵羊哥哥
2018/10/22
0
0
全面理解面向对象的 JavaScript

简介: JavaScript 函数式脚本语言特性以及其看似随意的编写风格,导致长期以来人们对这一门语言的误解,即认为 JavaScript 不是一门面向对象的语言,或者只是部分具备一些面向对象的特征。本...

IBMdW
2013/04/21
1K
6
深入理解javascript原型和闭包(完结)

说明:   该教程绕开了javascript的一些基本的语法知识,直接讲解javascript中最难理解的两个部分,也是和其他主流面向对象语言区别最大的两个部分——原型和闭包,当然,肯定少不了原型链...

zh151832
2016/08/02
27
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
47分钟前
4
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
今天
4
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
7
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部