对象的定义其实很广泛,万物皆为对象,我们创建对象一般都是用构造函数来创建的,这里我们来说说构造函数创建对象的原型图把.

这个问题有点抽象,举个例子来说,方便一点:

这是我们构造函数,这里我们要结合一张 图来说明就更清楚了,这里我们就用一个实例p1好了,其他两个就不用了.

这是构造函数和实例的初始关系,person就是这个构造函数,它里面其实有个属性叫prototype,prototype属性的值也是个对象,而这个对象其实就是称作构造函数的原型对象.到这里那上面那张图里应该要多谢东西了:

这个原型对象是有prototype而产生的,那这个原型函数里也有个特殊的属性叫做constructor,它的值其实就是构造函数本身person,原型对象我们也是可以给他加属性的,例如:

这样上面原型图有变了:

然而构造函数的实例和原型对象有关系吗?其实也是有关系的.原型对象中的属性是可以被实例共享的,那为什么可以共享呢?因为实例中其实有一个属性叫__proto__.它的值也是原型对象.

Person.prototype===p1.__proto__  是完全相等的.

因为可以共享,所以这里其实p1.constructor得到就是person构造函数本身,

这里要注意一点,当你要获取一个对象的属性时,第一步会先从自身来找,如果自己的属性中没有,才会从原型对象中接着查找,一直一层一层查找下去.

转载于:https://www.cnblogs.com/cykblogs/p/5894520.html

对象构造函数的原型图相关推荐

  1. 构造函数、原型、继承原来这么简单?来吧,深入浅出

    构造函数 小编上篇博客中介绍到的通过关键字class方式定义类,然后根据类再创建对象的方式,是ES6中语法,现在很多浏览器对ES6的支持还不是很好,所以也要学习通过构造函数(构建函数)的方式创建对象 ...

  2. 深入javascript——构造函数和原型对象

    常用的几种对象创建模式 使用new关键字创建 最基础的对象创建方式,无非就是和其他多数语言一样说的一样:没对象,你new一个呀! var gf = new Object(); gf.name = &q ...

  3. 原型、原型对象、构造函数、原型链理解

    1. 基本概念: "原型属性"也可以叫做"原型"(prototype):所有函数都有prototype,我觉得可以理解为python中的类属性,不需要通过实例, ...

  4. ES6/02/创建对象,构造函数和原型,原型和原型链,this指向,类,ES5新增的方法,数组方法,回调函数,ES5新增的字符串方法,ES5中新增的对象方法

    创建对象 1,利用new Object()创建对象 var obj1 =new Object(); 2,利用对象字面量创建对象 var obj2={}; 3,利用构造函数创建对象 function S ...

  5. java 原型图_一张图搞懂原型、原型对象、原型链

    基本概念 在javascript中,函数可以有属性. 每个函数都有一个特殊的属性叫作原型(prototype) 每个对象拥有一个原型对象 [[Prototype]] / __proto__ / Obj ...

  6. JavaScript 进阶 35 -- 构造函数、原型对象、实例之间的关系详解

    说到继承 ,先要弄明白 :构造函数.原型对象.实例之间的关系. 先来了解几个简单的概念: 构造函数:通过 关键字 new 来调用的 函数,var p = new Person():Person就称为构 ...

  7. javascript面向对象精要学习总结(第四章 构造函数和原型对象)

    constructor 实例的构造函数属性 它是实例的构造函数属性,指向创建它的构造函数 不要用它来检测对象的类型,因为它可以被覆盖,并不准确 检测对象类型最好使用 instanceof functi ...

  8. 35 利用构造函数和原型对象实现继承

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.概述 ES6之前并没有给我们提供extends继承,我们可以通过构造函数+原型对象模拟 ...

  9. javascript面向对象系列第一篇——构造函数和原型对象

    前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如何用构造函数和原型对象来创建对象 构造函数 构造函数是 ...

最新文章

  1. 十七UML核心视图动态视图之时序图
  2. Faas 和无服务器架构
  3. P3320:寻宝游戏(生成树)
  4. ps制作20种特效文字_用PS制作裂、火、电特效——电
  5. mysql中char与varchar的区别分析
  6. 框架基础——全面解析Java注解
  7. (王道408考研操作系统)第四章文件管理-第一节7:文件共享
  8. 【英语学习】【Daily English】U11 Work L04 Can you keep it a secret?
  9. Java:比较两个对象中全部属性值是否相等
  10. linux下C语言实现守护进程
  11. 限时授权复制文件 1.0(2015.9.2更新)
  12. Java网络编程:TCP实现群聊功能代码
  13. DTP,VTP,链路聚合
  14. Android使用字体代替图标
  15. 几块钱的超声波也能仿真?ROS2仿真之添加超声波传感器
  16. 利用Python实现中文转拼音
  17. 算法竞赛入门经典 开灯问题
  18. Oracle11g R2相比R1的区别
  19. YOLOv5全面解析教程③:更快更好的边界框回归损失
  20. 25匹马,5个跑道,每次只能跑5匹,用最少的次数选出最快的前3匹

热门文章

  1. 智慧交通day00-项目简介
  2. python装饰器函数执行后日志_python 装饰器理解
  3. Linux实操篇——实用指令学习笔记(详解)
  4. Chapter4-1_Speech_Synthesis(Tacotron)
  5. LeetCode MySQL 1587. 银行账户概要 II
  6. LeetCode 1105. 填充书架(DP)
  7. 免费python基础笔记_python基础笔记(一)
  8. linux python命令无反应_Python学习第164课--Linux命令行特殊符号的意义及命令的语法规则...
  9. 加了元学习之后,少样本学习竟然可以变得这么简单!
  10. 做一个好的搜索引擎有多难