js中prototype与__proto__区别
proto(隐式原型)与prototype(显式原型) 
显式原型 explicit prototype property:
每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象。
隐式原型 implicit prototype link:
JavaScript中任意对象都有一个内置属性[[prototype]],在ES5之前没有标准的方法访问这个内置属性,但是大多数浏览器都支持通过proto来访问。
ES5中有了对于这个内置属性标准的Get方法Object.getPrototypeOf()。
__proto__是每个对象都有的一个属性,而prototype是函数才会有的属性 
使用Object.getPrototypeOf()代替__proto__
prototype:几乎所有的函数(除了一些内建函数)都有一个名为prototype(原型)的属性,这个属性是一个指针,指向一个对象,
而这个对象的用途是包含可以有特定类型的所有实例共享的属性和方法。
prototype是通过调用构造函数而创建的那个对象实例的原型对象。
Object.prototype 这个对象是个例外,它的proto值为null
作用:
显式原型的作用:用来实现基于原型的继承与属性的共享。
隐式原型的作用:构成原型链,同样用于实现基于原型的继承。举个例子,当我们访问obj这个对象中的x属性时,如果在obj中找不到,那么就会沿着proto依次查找。
_proto_的指向 
根据ECMA定义 ‘to the value of its constructor’s “prototype” ’ —-指向创建这个对象的函数的显式原型。
所以关键的点在于找到创建这个对象的构造函数,接下来就来看一下JS中对象被创建的方式: 
(1)对象字面量的方式 
(2)new 的方式 
(3)ES5中的Object.create()
__proto__:对象具有属性__proto__,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,
这也保证了实例能够访问在构造函数原型中定义的属性和方法。
Object.getPrototypeOf():一个对象实例通过内部属性[[Prototype]]跟踪其原型对象。
使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。
可以调用对象的Object.getPrototypeOf()方法读取[[Prototype]]属性的值,
也可以使用isPrototypeOf()方法检查某个对象是否是另一个对象的原型对象。
大部分JavaScript引擎在所有对象上都支持一个名为__proto__的属性,该属性可以直接读写[[Prototype]]属性。
1.对象有属性__proto__,指向该对象的构造函数的原型对象。
2.方法除了有属性__proto__,还有属性prototype,prototype指向该方法的原型对象。
js中prototype与__proto__区别的更多相关文章
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍
		
一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的proto ...
 - 【转】Js中Prototype、__proto__、Constructor、Object、Function关系介绍
		
一 Prototype.__proto__与Object.Function关系介绍 Function.Object:Js自带的函数对象. prototype,每一个 ...
 - js中prototype与__proto__的关系详解
		
一.构造函数: 构造函数:通过new关键字可以用来创建特定类型的对象的函数.比如像Object和Array,两者属于内置的原生的构造函数,在运行时会自动的出现在执行环境中,可以直接使用.如下: var ...
 - js中prototype,__proto__,constructor之间的关系
		
首先,我们需要了解三点: 1. 只要创建一个任意新函数,就会根据一个prototype属性,该属性指向函数的原型对象: 2. 每一个原型对象都会自动获得一个constructor属性,该属性只想pro ...
 - js中const,var,let区别(转载)
		
js中const,var,let区别 来源:https://www.cnblogs.com/zzsdream/p/6372729.html 今天第一次遇到const定义的变量,查阅了相关资料整理了这篇 ...
 - JS的prototype和__proto__(含es6的class)
		
JS的prototype和__proto__(含es6的class) 一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一个prototype属性),这 ...
 - JS的prototype和__proto__、constructor
		
看了JS的prototype和__proto__这篇文章,才感觉很清晰了,对于原型这块,以前经常把这些属性弄不清楚, 明白了之后保存下整理下: prototype: 是函数的一个属性(每个函数都有一个 ...
 - 在 JavaScript 中 prototype 和 __proto__ 有什么区别
		
本文主要讲三个 问题 prototype 和 proto function 和 object new 到底发生了什么 prototype 和 proto 首先我们说下在 JS 中,常常让我们感到困惑的 ...
 - 【前端】JavaScript中prototype和__proto__的区别
		
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/prototype.html 经常有小伙伴问我关于prototype和__proto__的问题,觉得有必要写一篇博客 ...
 
随机推荐
- [Scikit-Learn] - 数据预处理 - 缺失值(Missing Value)处理
			
reference : http://www.cnblogs.com/chaosimple/p/4153158.html 关于缺失值(missing value)的处理 在sklearn的prepro ...
 - this指的是,调用函数的那个对象。
			
恩 http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
 - 详解第一个CUDA程序kernel.cu
			
CUDA是一个基于NVIDIA GPU的并行计算平台和编程模型,通过调用CUDA提供的API,可以开发高性能的并行程序.CUDA安装好之后,会自动配置好VS编译环境,按照UCDA模板新建一个工程&qu ...
 - 机器学习: Viola-Jones 人脸检测算法解析(二)
			
上一篇博客里,我们介绍了VJ人脸检测算法的特征,就是基于积分图像的矩形特征,这些矩形特征也被称为Haar like features, 通常来说,一张图像会生成一个远远高于图像维度的特征集,比如一个 ...
 - WPF用Blend写的交通信号灯
			
原文:WPF用Blend写的交通信号灯 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/1 ...
 - Git 内部原理--初探 .git
			
说到Git大家应该都非常熟悉,几乎每天都会用到它.在日常使用过程中,我们貌似并不需要关注其内部的原理,只需要记住那几个常用的命令,就可以说自己是会Git的人了.可是,事实真的是这样子的吗?今天我们就来 ...
 - VUE线上通过nginx反向代理实现跨域
			
1.NGINX反向代理实现跨域 VUE代码中配置参考上一篇文章 nginx配置,红色框线内: 代码: location /list { proxy_set_header X-Real-IP $remo ...
 - win10限制访问解决
			
你的IT管理员已经限制对此应用一些区域的访问,你尝试访问的项目不可用.有关详细,请与你的IT支持人员联系. 按下win+s打开Cortana,在框中输入命令提示符,右键管理员身份运行在命令提示符中输入 ...
 - Android 5.0(L) ToolBar(替代ActionBar) 现实(四)
			
经过三天休息,我回来了,我们继续讨论Toolbar. 在此之前假设您正在步步紧跟下来的序列,然后,你应该注意到MainActivity据说他已被警告.因为他们,我们声明toolbar对象.但一直没有用 ...
 - 最简单的IdentityServer实现——IdentityServer
			
1.新建项目 新建ASP .Net Core项目IdentityServer.EasyDemo.IdentityServer,选择.net core 2.0 1 2 引用IdentitySer ...