javascript中prototype与__proto__
1、prototype:构造函数独有的属性;
__proto__:每个对象都有一个名为__proto__的属性;
注意:每个构造函数(自带与自创)都有一个prototype的属性,构造函数的prototype的属性也是一个对象,因此也有一个__proto__的属性。
function A(){}
var a = new A();
console.log(a.prototype); // undefined
console.log(A.prototype); // Object {}
console.log(a.__proto__); // Object {}
console.log(A.__proto__); // function() {}
console.log(A.__proto__.__proto__); // Object {}
console.log(A.__proto__.__proto__.__proto__); // null
console.log(A.prototype.__proto__); // Object {}
console.log(A.prototype.__proto__.__proto__); // null
结论:
a、构造函数的实例没有prototype属性;
b、A.prototype === a.__proto__,每个对象的__proto__属性指向自身构造函数的prototype;
c、构造函数也是对象,构造函数的__proto__属性指向一个 function() {}的空函数,空函数__proto__属性指向Object {};
d、Object{}的__proto__属性最终指向null。
2、constructor:存在于构造函数的prototype属性中,一般指向构造函数,不过也不一定,可以修改。
function A(){}
var a = new A();
console.log(A.prototype.constructor); // function A(){}
console.log(a.__proto__.constructor); // function A(){}
console.log(A.__proto__.constructor); // function Function() { [native code] }
console.log(A.__proto__.__proto__.constructor); // function Object() { [native code] }
console.log(A.prototype.__proto__.constructor); // Object {}
3、关系表
function Foo(who) {
    this.me = who;
}
Foo.prototype.identify = function() {
    return "I am " + this.me;
};
function Bar(who) {
    Foo.call(this,who);
}
Bar.prototype = Object.create(Foo.prototype);
// NOTE: .constructor is borked here, need to fix
Bar.prototype.speak = function() {
    alert("Hello, " + this.identify() + ".");
};
var b1 = new Bar("b1");
var b2 = new Bar("b2");
b1.speak(); // alerts: "Hello, I am b1."
b2.speak(); // alerts: "Hello, I am b2."

参考:https://davidwalsh.name/javascript-objects-deconstruction
javascript中prototype与__proto__的更多相关文章
- 在 JavaScript 中 prototype 和 __proto__ 有什么区别
		
本文主要讲三个 问题 prototype 和 proto function 和 object new 到底发生了什么 prototype 和 proto 首先我们说下在 JS 中,常常让我们感到困惑的 ...
 - 【前端】JavaScript中prototype和__proto__的区别
		
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/prototype.html 经常有小伙伴问我关于prototype和__proto__的问题,觉得有必要写一篇博客 ...
 - Javascript中prototype属性详解   (存)
		
Javascript中prototype属性详解 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不 ...
 - (转载)详解Javascript中prototype属性(推荐)
		
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...
 - javascript中prototype、constructor以及__proto__之间的三角关系
		
三者暧昧关系简单整理 在javascript中,prototype.constructor以及__proto__之间有着“著名”的剪不断理还乱的三角关系,楼主就着自己对它们的浅显认识,来粗略地理理以备 ...
 - Javascript中prototype属性详解
		
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...
 - Js中Prototype、__proto__、Constructor、Object、Function关系介绍
		
一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的proto ...
 - Javascript中prototype属性的详解
		
原文链接:http://www.cnblogs.com/Uncle-Keith/p/5834289.html 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象 ...
 - 详解Javascript中prototype属性(推荐)
		
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...
 
随机推荐
- MySQL性能调优与架构设计——第10章 MySQL数据库Schema设计的性能优化
			
第10章 MySQL Server性能优化 前言: 本章主要通过针对MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化, ...
 - 团体程序设计天梯赛L1-018	大笨钟                                                                                            2017-03-22 17:29             79人阅读              评论(0)              收藏
			
L1-018. 大笨钟 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 微博上有个自称"大笨钟V"的家伙,每 ...
 - [leetcode] 7. Binary Tree Level Order Traversal II
			
这次相对来讲复杂点,题目如下: Given a binary tree, return the bottom-up level order traversal of its nodes' values ...
 - 控制 MediaElement(播放、暂停、停止、音量和速度)
			
控制 MediaElement(播放.暂停.停止.音量和速度) WPF中对于多媒体的支持非常完整,一般都是通过MediaElement来实现的. http://msdn.microsoft.com/z ...
 - 「NOI2014」魔法森林
			
题目链接 戳我 \(Solution\) 两个变量,emm...不好搞啊. 于是我们可以按照\(A\)排序.然后动态加边,因为\(A\)是越来越大,所以不需要管他,只要使得\(1\)~\(n\)的路径 ...
 - markdown字体或者图片居中
			
1.图片居中实例: 图片居中效果: 2.文字居中实例: 文字居中效果: 你的名字
 - 【OCP认证12c题库】CUUG 071题库考试原题及答案(25)
			
25. choose the best answer Evaluate the following SQL statement: ALTER TABLE hr.emp SET UNUSED (mgr_ ...
 - Mybatis 的输入参数学习
			
mybatis 的输入参数: 指得就是parameterType的参数 这个参数就代表的sql语句中的输入参数 sql语句中的参数使用 有两种方式 : 使用#{} 获取: 8个基本数据类型 + S ...
 - JAVA常见面试题之Forward和Redirect的区别  (转发和重定向)
			
阅读目录 一:间接请求转发(Redirect) 二:直接请求转发(Forward) 用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相 ...
 - DC010的精华分享【首发速看】
			
世界黑客大会[DC010] 是全球安全圈最神秘.最前沿的黑客大派对 而作为中国首个受DEFCON授权支持成立的 地区性 信息 安全 技术交流平台 DEFCONGROUP 010(DC010) 在国内 ...