js prototype和__proto__的关系是什么


Posted in Javascript onAugust 23, 2019

我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个对象,它的用途是包含可以由特定类型的所有实例共享的属性和方法。(这个对象下面有个属性,这个属性是另外一个对象的应用 ,这个属性就是一个对象。)

function是对象,function的原型prototype也是对象,它们都会具有对象共有的特点。即:对象具有属性__proto__,每个对象都会在其内部初始化一个属性,就是__proto__,当我们访问一个对象的属性 时,如果这个对象内部不存在这个属性,那么他就会去__proto__里找这个属性,这个__proto__又会有自己的__proto__,于是就这样 一直找下去,也就是我们平时所说的原型链的概念。__proto__可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。

funcition这个特殊的对象,除了和其他对象一样有上述_proto_属性之外,还有自己特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象)。prototype是通过调用构造函数而创建的那个对象实例的原型对象。使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法,不必在构造函数中定义对象实例的信息,而是可以将这些信息直接添加到原型对象中。原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。

ptototype和__proto__联系

prototype和__proto__都指向原型对象,任意一个函数(包括构造函数)都有一个prototype属性,指向该函数的原型对象,同样任意一个构造函数实例化的对象,都有一个__proto__属性(__proto__并非标准属性,ECMA-262第5版将该属性或指针称为[[Prototype]],可通过Object.getPrototypeOf()标准方法访问该属性),指向构造函数的原型对象。---sinのstone

ptototype和__proto__区别

//a作为构造函数时的prototype属性与a作为普通函数时的__proto__属性并不相等
console.log(a.prototype == a.__proto__);//false

console.log(a.__proto__);     //function (){}
console.log(a.__proto__ == Function.prototype);//true

//a作为一个普通函数调用时,它的构造函数是内置对象Function,所以它指向的原型对象,就是Function.prototype.
//其实这个和console.log(b.__proto__ == a.prototype)是一样的道理

//a作为构造函数时,它的原型,和它的原型的原型
console.log(a.prototype);          //a{}
console.log(a.prototype.__proto__); //Object{}

//a作为普通函数时,它原型的原型
console.log(a.__proto__.__proto__); //Object{}

console.log(a.__proto__.__proto__ == a.prototype.__proto__); //true

所有对象都有__proto__属性,函数这个特殊对象除了具有__proto__属性,还有特有的原型属性prototype。prototype对象默认有两个属性,constructor属性和__proto__属性。prototype属性可以给函数和对象添加可共享(继承)的方法、属性,而__proto__是查找某函数或对象的原型链方式。constructor,这个属性包含了一个指针,指回原构造函数。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
简单的前端js+ajax 购物车框架(入门篇)
Oct 29 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
Apr 21 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
Nov 03 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
Apr 01 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
Dec 28 Javascript
jQuery滚动监听实现商城楼梯式导航效果
Mar 06 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
Sep 30 Javascript
JSONP原理及应用实例详解
Sep 13 Javascript
Angular Material Icon使用详解
Nov 07 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 Javascript
javascript实现前端成语点击验证
Jun 24 Javascript
vue 使用原生组件上传图片的实例
Sep 08 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
Aug 23 #Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
Aug 23 #Javascript
微信小程序swiper禁止用户手动滑动代码实例
Aug 23 #Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
Aug 23 #Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
Aug 23 #Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
Aug 23 #Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
Aug 23 #Javascript
You might like
php IP及IP段进行访问限制的代码
2008/12/17 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
Jquery树插件zTree实现菜单树
2017/01/24 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
小程序实现投票进度条
2019/11/20 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python连接phoenix的方法示例
2017/09/29 Python
Python实现通讯录功能
2018/02/22 Python
学生信息管理系统python版
2018/10/17 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
个人找工作求职简历的自我评价
2013/10/20 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技