① __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属性,继承的更多相关文章

  1. JavaScript 构造函数 prototype属性和_proto_和原型链 constructor属性 apply(),call()和bind() 关键字this

    1.构造函数: 通常构造函数首字母需要大写,主要是为了区别ECMAScript的其它函数.(高程三 P145) 构造函数与其他函数的唯一区别,就在于调用它们的方式不同.只要通过new来调用,任何函数都 ...

  2. JS原型,Prototype,原型

    对于javascript这样一种前端语言,个人觉得,要真正的理解其oop, 就必须要彻底搞清楚javascript的对象,原型链,作用域,闭包,以及this所引用的对象等概念.这些对弄明白了,应该就可 ...

  3. 怎样理解prototype对象的constructor属性

    function Person(name){ this.name = name; } var lilei = new Person("Lilei"); lilei.construc ...

  4. 【JavaScript 封装库】Prototype 原型版发布!

    /* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...

  5. JavaScript oop proto与prototype原型图

    [_proto_与prototype] 1.prototype(函数的原型):函数才有prototype.prototype是一个对象,指向了当前构造函数的引用地址. 2._proto_(对象的原型对 ...

  6. 大白话通俗易懂的讲解javascript原型与原型链(__proto__、prototype、constructor的区别)

    javascript原型和原型链是js中的重点也是难点,理论上来说应该是属于面向对象编程的基础知识,那么我们今天为什么要来讲这个呢?(因为我也忘了,最近看资料才揭开面纱……  哈哈哈) 好了,直接进入 ...

  7. JavaScript中的原型prototype和__proto__的区别及原型链概念

    问题 初学js的同学,总是搞不清楚js中的原型是什么东西,看着控制台打印出来的一串串__proto__,迷惑不已. 例如我定义一个Person,创建一个实例p,并打印实例. function Pers ...

  8. JavaScript深入之从原型到原型链(本文转载)

    JavaScript深入之从原型到原型链(本文转载) https://github.com/mqyqingfeng/Blog.原文地址 构造函数创建对象 我们先使用构造函数创建一个对象: functi ...

  9. (转)JavaScript深入之从原型到原型链

    构造函数创建对象 我们先使用构造函数创建一个对象: function Person() { } var person = new Person(); person.name = 'Kevin'; co ...

  10. javascript原型与原型链个人理解

    想了解原型和原型链,我觉得首先我们得知道javascript里有一个Object 与 Function,它俩都是构造函数,当然函数也是一个对象.我们打印Object 与 Function看一下, co ...

随机推荐

  1. Centos7下安装MongoDB4.0.10

    前言 模式自由 :可以把不同结构的文档存储在同一个数据库里 面向集合的存储:适合存储 JSON风格文件的形式 完整的索引支持:对任何属性可索引 复制和高可用性:支持服务器之间的数据复制,支持主-从模式 ...

  2. mongoDB的基本操作之数据更新

    查询了解后,我们还要了解下如何进行数据的更新,在mongodb中,数据的更新是用update方法,update至少接收两个参数,一个是要查找的记录条件,一个是更新之后的数据,我们现在查找x为1的数据 ...

  3. ICPC2019上海站游记

    银牌第4,差4名拿金 金牌就保研国奖,银牌就什么都没有 最痛苦的是功败垂成 也许签到罚时太多罢,也许构造做得太晚罢,也许J题没有做出来罢 翻来覆去,似乎也想不到得金的理由 福兮祸所倚 年轻人多遇到点挫 ...

  4. vscode插件-JavaScript(ES6) Code Snippets 缩写代表含义

    Import and export Trigger Content imp→ imports entire module import fs from 'fs'; imn→ imports entir ...

  5. pandas实现hive的lag和lead函数 以及 first_value和last_value函数

    lag和lead VS shift 该函数的格式如下: 第一个参数为列名, 第二个参数为往上第n行(可选,默认为1), 第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL ...

  6. ZooKeeper某一QuorumPeerMain挂了

    问题在哪呢?好久没没有出现类似问题了 解决方案: 之前zookeeper 是可以正常启动的,今天启动zookeeper时报如上错误.经过测试发现: 只要在~/zookeeper/data/ 下删除文件 ...

  7. JavsScript 一些技巧方法

    直接定义一个匿名函数,并立即调用: (function(){     //TODO: }()); 说明:function之前的左圆括号是必需的,如果不写这个,JavaScript解析器会试图将关键字f ...

  8. 浏览器顶部设置margin-top时存在的bug

    浏览器bug<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8 ...

  9. deferred.pipe([doneFilter],[failFilter],[progressFilter])

    deferred.pipe([doneFilter],[failFilter],[progressFilter]) 概述 筛选器和/或链Deferreds的实用程序方法. deferred.pipe( ...

  10. 001_Python安装

    1. 判断电脑是否已经安装python,电脑->运行->输入:python 2. 如果没有安装,去官网下载:https://www.python.org/downloads/ 3. 安装过 ...