文档章节

__proto__ && prototype

秋风醉了
 秋风醉了
发布于 2014/07/21 23:13
字数 387
阅读 71
收藏 3

__proto__ && prototype

一个对象的__proto__ 属性和自己的内部属性[[Prototype]]指向一个相同的值 (通常称这个值为原型),原型的值可以是一个对象值也可以是null(比如说Object.prototype.__proto__的值就是null)。该属性可能会引发一些错误,因为用户可能会不知道该属性的特殊性,而给它赋值,从而改变了这个对象的原型。如果需要访问一个对象的原型,应该使用方法Object.getPrototypeOf。

 

当一个对象被创建时,它的 __proto__ 属性和内部属性[[Prototype]]指向了相同的对象 (也就是它的构造函数的prototype属性)。改变__proto__ 属性的值同时也会改变内部属性[[Prototype]]的值,除非该对象是不可扩展的。

 

什么是内部属性:http://my.oschina.net/xinxingegeya/blog/290167

Be aware that __proto__ is not the same as prototype, since __proto__is a property of the instances (objects), whereas prototype is a property of the constructor functions used to create those objects. 

Consider another object called monkey and use it as a prototype when creating objects with the Human() constructor.

var monkey = {
    feeds: 'bananas',
    breathes: 'air'
};
function Human() {
}
Human.prototype = monkey;////使用monkey对象重写Human的prototype属性

var developer = new Human();
developer.feeds = 'pizza';
developer.hacks = 'JavaScript';

console.log(developer.hacks);//JavaScript
console.log(developer.feeds);//pizza
console.log(developer.breathes); //air

console.log(developer.__proto__ === monkey); //true

console.log(typeof developer.__proto__); //object
console.log(typeof developer.prototype);//undefined
console.log(typeof developer.constructor.prototype);//object
console.log(typeof developer.constructor); //function

The secret link is exposed in most modern JavaScript environments as the __proto__ property (the word "proto" with two underscores before and two after).

Be aware that __proto__is not the same as prototype, since __proto__is a property of the instances (objects), whereas prototype is a property of the constructor functions used to create those objects.

=======END=======

© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 239
博文 573
码字总数 417084
作品 0
朝阳
程序员
私信 提问
js中的prototype和__proto__

prototype是函数的属性,每个函数都拥有一个prototype属性;proto是一个对象拥有的内置属性,是new一个实例时动态添加的属性,也是js内部寻找原型链的属性。 prototype属性拥有一个construct...

LorinLuo
2016/01/30
146
0
Javascript的原型、原型链、原型链继承

原型 在javascript中,原型分有两种:显示原型(prototype)和隐式原型(proto)。 proto(隐式原型) JavaScript中任意对象都有一个内置属性,在ES5之前没有标准的方法访问这个内置属性,但...

xiedrsz
2017/07/03
0
0
JavaScript 原型总结四 隐式原型

1.隐式原型 上节已经提到,每个函数function都有一个prototype,即原型。这里再加一句话——每个对象都有一个proto,可成为隐式原型。 obj这个对象本质上是被Object函数创建的,因此obj.pro...

张泽立
01/28
0
0
ES5和ES6中的继承

ES5 ES5中的继承,看图: ES5中这种最简单的继承,实质上就是将子类的原型设置为父类的实例。 ES6 ES6中的继承,看图: 所以 ES6和ES5的继承是一模一样的,只是多了class 和extends ,ES6的子...

WolfX
2016/06/03
52
0
关于JS面向对象中原型和原型链以及他们之间的关系及this的详解

一:原型和原型对象: 1.函数的原型prototype:函数才有prototype,prototype是一个对象,指向了当前构造函数的引用地址。 2.函数的原型对象proto:所有对象都有proto属性, 当用构造函数实例...

shptc
2017/06/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Rotate Array(leetCode189)

Given an array, rotate the array to the right by k steps, where k is non-negative. Example 1: Input: [1,2,3,4,5,6,7] and k = 3Output: [5,6,7,1,2,3,4]Explanation:rotate 1 s......

woshixin
17分钟前
0
0
给女朋友讲解什么是Optional【JDK 8特性】

前言 只有光头才能变强 前两天带女朋友去图书馆了,随手就给她来了一本《与孩子一起学编程》的书,于是今天就给女朋友讲解一下什么是Optional类。 至于她能不能看懂,那肯定是看不懂的。(学到...

Java3y
37分钟前
1
0
2019年六大新兴信息安全方向

导读 黑客攻击和网络犯罪的威胁正在不断升级,相应的技术“军备竞赛”正愈演愈烈,对于信息安全从业人员来说,掌握最新的信息安全工具,是在信息安全战争中生存下来的关键所在。 从特朗普的手...

问题终结者
44分钟前
1
0
redis扩展-自定义PropertyPlaceholderConfigurer,在spring属性注入之前,手动将properteis合并到spring容器中

背景:spring容器启动过程中,通过PropertyPlaceholderConfigurer读取properties配置文件,并将properties配置文件中的值注入spring bean的属性中, PropertyPlaceholderConfigurer使用方式多...

燃犀
46分钟前
0
0
PostgreSQL SPI 中的错误处理

PostgreSQL SPI 用于在 C 或是其他编程语言编写的扩展函数(存储过程)中调用数据库本身的解析器、规划器和执行器的功能,以及对 SQL 语句进行执行。 在最重要的一个函数 SPI_execute 的文档...

helloclia
47分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部