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 相关文章推荐
asp 取文本框名称代码
Dec 02 Javascript
在html页面上拖放移动标签
Jan 08 Javascript
javascript两种function的定义介绍及区别说明
May 02 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
JavaScript 对象字面量讲解
Jun 06 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
JSONP基础知识详解
Mar 19 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
Jun 04 Javascript
微信小程序+云开发实现欢迎登录注册
May 24 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
May 27 jQuery
Vue实现兄弟组件间的联动效果
Jan 21 Javascript
JavaScript原型链详解
Nov 07 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的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
php URL验证正则表达式
2011/07/19 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
深入理解Python中的元类(metaclass)
2015/02/14 Python
python实现括号匹配的思路详解
2018/08/23 Python
python代码 输入数字使其反向输出的方法
2018/12/22 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
成教自我鉴定
2013/10/27 职场文书
五一活动标语
2014/06/30 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书