JavaScript里的原型(prototype), 原型链,constructor属性,继承
① __proto__ 和 constructor 属性是 对象 所独有的。
② prototype 属性是 函数 所独有的。
** JS里函数也是引用类型的对象,所以函数也有 __proto__ 和 constructor 属性
__proto__ 和 原型链
(1)__proto__ 属性都是由一个对象指向一个对象,即指向它们的 原型对象。
(2)__proto__ 属性存在的作用:当访问一个对象属性A时,如果当前对象自身内部没有这个属性,就会上溯到__proto__ 属性所指的对象(原型对象 / 父级对象),如果父级对象自身也不存在这个属性,则上溯到父级对象的 __proto__ 属性所指的对象,一直上溯到原型链顶端 null, 最终没找到 属性A时,则返回 undefined
(3)通过 __proto__ 属性来连接对象直到 null 的一条链即是原型链
prototype
(1)prototype 属性都是由一个函数A指向一个对象,即函数A的原型对象(父级对象), 这个原型对象也是 由该函数A所创建的(实例化)对象的原型对象
( new funA() ).__proto__ === funA.prototype
(2)prototype 属性存在的作用:该属性可以包含所有实例对象共享的属性和方法。( 这里的实例对象是又该函数所实例化的)
constructor
(2)constructor 属性都是由:一个对象指向一个函数。指向该函数的构造函数。每个对象都有构造函数,Function这个函数构造函数是它本身。所有函数和对象最终都是由Function构造函数得来,所以 constructor 属性的终点就是Function这个函数。
继承
继承是指一个对象直接使用另外一个对象的属性和方法。
参考连接:https://chen-cong.blog.csdn.net/article/details/81211729
JavaScript里的原型(prototype), 原型链,constructor属性,继承的更多相关文章
- JavaScript 构造函数 prototype属性和_proto_和原型链 constructor属性 apply(),call()和bind() 关键字this
1.构造函数: 通常构造函数首字母需要大写,主要是为了区别ECMAScript的其它函数.(高程三 P145) 构造函数与其他函数的唯一区别,就在于调用它们的方式不同.只要通过new来调用,任何函数都 ...
- JS原型,Prototype,原型
对于javascript这样一种前端语言,个人觉得,要真正的理解其oop, 就必须要彻底搞清楚javascript的对象,原型链,作用域,闭包,以及this所引用的对象等概念.这些对弄明白了,应该就可 ...
- 怎样理解prototype对象的constructor属性
function Person(name){ this.name = name; } var lilei = new Person("Lilei"); lilei.construc ...
- 【JavaScript 封装库】Prototype 原型版发布!
/* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...
- JavaScript oop proto与prototype原型图
[_proto_与prototype] 1.prototype(函数的原型):函数才有prototype.prototype是一个对象,指向了当前构造函数的引用地址. 2._proto_(对象的原型对 ...
- 大白话通俗易懂的讲解javascript原型与原型链(__proto__、prototype、constructor的区别)
javascript原型和原型链是js中的重点也是难点,理论上来说应该是属于面向对象编程的基础知识,那么我们今天为什么要来讲这个呢?(因为我也忘了,最近看资料才揭开面纱…… 哈哈哈) 好了,直接进入 ...
- JavaScript中的原型prototype和__proto__的区别及原型链概念
问题 初学js的同学,总是搞不清楚js中的原型是什么东西,看着控制台打印出来的一串串__proto__,迷惑不已. 例如我定义一个Person,创建一个实例p,并打印实例. function Pers ...
- JavaScript深入之从原型到原型链(本文转载)
JavaScript深入之从原型到原型链(本文转载) https://github.com/mqyqingfeng/Blog.原文地址 构造函数创建对象 我们先使用构造函数创建一个对象: functi ...
- (转)JavaScript深入之从原型到原型链
构造函数创建对象 我们先使用构造函数创建一个对象: function Person() { } var person = new Person(); person.name = 'Kevin'; co ...
- javascript原型与原型链个人理解
想了解原型和原型链,我觉得首先我们得知道javascript里有一个Object 与 Function,它俩都是构造函数,当然函数也是一个对象.我们打印Object 与 Function看一下, co ...
随机推荐
- 搭建nginx文件服务器
一.安装nginx服务 apt install nginx 二.修改nginx配置文件 cd /etc/nginx/conf.d/ vim download_server.conf server { ...
- 安装sass时遇到Failed to build gem native extension
错误信息 执行命令: sudo gem install sass时遇到下面的错误信息 Building native extensions. This could take a while... ER ...
- 【jmeter】无GUI界面,命令行运行测试脚本
一.应用场景 1.无需交互界面或受环境限制(linux text model) 2.远程或分布式执行 3.持续集成,通过shell脚本或批处理命令均可执行,生成的测试结果可被报表生成模块直接使用,便于 ...
- Django 反向查找(related_name)
先定义两个模型,一个是A,一个是B,是一对多的类型 class A(models.Model): name= models.CharField('名称', max_length=32) class B ...
- using来定义类的别名,typedef,#define
宏定义:其实就是替换作用 #define TRUE 1 //结尾无分号,宏名TRUE,计算机会把所有TRUE替换为1. typedef:定义类的别名 tpyedef unsigned int U ...
- 签名/加密_Java_hutool( 01 代码实现 )
本文档不讲解签名/加密相关的理论知识, 仅列出通过Java实现的方式. 待处理: Hutool含有很多工具的封装, 有时间需要好好研究一下(https://blog.csdn.net/moshowga ...
- pyecharts 开发文档
pyechart 新 版本 https://pyecharts.org/#/zh-cn/quickstart pyecharts 老版本 https://05x-docs.pyecharts.org/ ...
- Oracle 后台进程(三)LGWR进程
一.LGWR进程简介 LGWR,是Log Writer的缩写,也是一种后台进程.主要负责将日志缓冲内容写到磁盘的在线重做日志文件或组中.DBWn将dirty块写到磁盘之前,所有与buffer修改相关的 ...
- Luogu5298 [PKUWC2018]Minimax
太久没写博客了,过来水一发. 题目链接:洛谷 首先我们想到,考虑每个叶节点的权值为根节点权值的概率.首先要将叶节点权值离散化. 假设现在是$x$节点,令$f_i,g_i$分别表示左/右节点的权值$=i ...
- 一行代码加快pandas计算速度
一行代码加快pandas计算速度 DASK https://blog.csdn.net/sinat_38682860/article/details/84844964 https://cloud.te ...