对象构造函数的原型图
对象的定义其实很广泛,万物皆为对象,我们创建对象一般都是用构造函数来创建的,这里我们来说说构造函数创建对象的原型图把.
这个问题有点抽象,举个例子来说,方便一点:
这是我们构造函数,这里我们要结合一张 图来说明就更清楚了,这里我们就用一个实例p1好了,其他两个就不用了.
这是构造函数和实例的初始关系,person就是这个构造函数,它里面其实有个属性叫prototype,prototype属性的值也是个对象,而这个对象其实就是称作构造函数的原型对象.到这里那上面那张图里应该要多谢东西了:
这个原型对象是有prototype而产生的,那这个原型函数里也有个特殊的属性叫做constructor,它的值其实就是构造函数本身person,原型对象我们也是可以给他加属性的,例如:
这样上面原型图有变了:
然而构造函数的实例和原型对象有关系吗?其实也是有关系的.原型对象中的属性是可以被实例共享的,那为什么可以共享呢?因为实例中其实有一个属性叫__proto__.它的值也是原型对象.
Person.prototype===p1.__proto__ 是完全相等的.
因为可以共享,所以这里其实p1.constructor得到就是person构造函数本身,
这里要注意一点,当你要获取一个对象的属性时,第一步会先从自身来找,如果自己的属性中没有,才会从原型对象中接着查找,一直一层一层查找下去.
转载于:https://www.cnblogs.com/cykblogs/p/5894520.html
对象构造函数的原型图相关推荐
- 构造函数、原型、继承原来这么简单?来吧,深入浅出
构造函数 小编上篇博客中介绍到的通过关键字class方式定义类,然后根据类再创建对象的方式,是ES6中语法,现在很多浏览器对ES6的支持还不是很好,所以也要学习通过构造函数(构建函数)的方式创建对象 ...
- 深入javascript——构造函数和原型对象
常用的几种对象创建模式 使用new关键字创建 最基础的对象创建方式,无非就是和其他多数语言一样说的一样:没对象,你new一个呀! var gf = new Object(); gf.name = &q ...
- 原型、原型对象、构造函数、原型链理解
1. 基本概念: "原型属性"也可以叫做"原型"(prototype):所有函数都有prototype,我觉得可以理解为python中的类属性,不需要通过实例, ...
- ES6/02/创建对象,构造函数和原型,原型和原型链,this指向,类,ES5新增的方法,数组方法,回调函数,ES5新增的字符串方法,ES5中新增的对象方法
创建对象 1,利用new Object()创建对象 var obj1 =new Object(); 2,利用对象字面量创建对象 var obj2={}; 3,利用构造函数创建对象 function S ...
- java 原型图_一张图搞懂原型、原型对象、原型链
基本概念 在javascript中,函数可以有属性. 每个函数都有一个特殊的属性叫作原型(prototype) 每个对象拥有一个原型对象 [[Prototype]] / __proto__ / Obj ...
- JavaScript 进阶 35 -- 构造函数、原型对象、实例之间的关系详解
说到继承 ,先要弄明白 :构造函数.原型对象.实例之间的关系. 先来了解几个简单的概念: 构造函数:通过 关键字 new 来调用的 函数,var p = new Person():Person就称为构 ...
- javascript面向对象精要学习总结(第四章 构造函数和原型对象)
constructor 实例的构造函数属性 它是实例的构造函数属性,指向创建它的构造函数 不要用它来检测对象的类型,因为它可以被覆盖,并不准确 检测对象类型最好使用 instanceof functi ...
- 35 利用构造函数和原型对象实现继承
技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.概述 ES6之前并没有给我们提供extends继承,我们可以通过构造函数+原型对象模拟 ...
- javascript面向对象系列第一篇——构造函数和原型对象
前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如何用构造函数和原型对象来创建对象 构造函数 构造函数是 ...
最新文章
- 十七UML核心视图动态视图之时序图
- Faas 和无服务器架构
- P3320:寻宝游戏(生成树)
- ps制作20种特效文字_用PS制作裂、火、电特效——电
- mysql中char与varchar的区别分析
- 框架基础——全面解析Java注解
- (王道408考研操作系统)第四章文件管理-第一节7:文件共享
- 【英语学习】【Daily English】U11 Work L04 Can you keep it a secret?
- Java:比较两个对象中全部属性值是否相等
- linux下C语言实现守护进程
- 限时授权复制文件 1.0(2015.9.2更新)
- Java网络编程:TCP实现群聊功能代码
- DTP,VTP,链路聚合
- Android使用字体代替图标
- 几块钱的超声波也能仿真?ROS2仿真之添加超声波传感器
- 利用Python实现中文转拼音
- 算法竞赛入门经典 开灯问题
- Oracle11g R2相比R1的区别
- YOLOv5全面解析教程③:更快更好的边界框回归损失
- 25匹马,5个跑道,每次只能跑5匹,用最少的次数选出最快的前3匹
热门文章
- 智慧交通day00-项目简介
- python装饰器函数执行后日志_python 装饰器理解
- Linux实操篇——实用指令学习笔记(详解)
- Chapter4-1_Speech_Synthesis(Tacotron)
- LeetCode MySQL 1587. 银行账户概要 II
- LeetCode 1105. 填充书架(DP)
- 免费python基础笔记_python基础笔记(一)
- linux python命令无反应_Python学习第164课--Linux命令行特殊符号的意义及命令的语法规则...
- 加了元学习之后,少样本学习竟然可以变得这么简单!
- 做一个好的搜索引擎有多难