_proto_实际上是某个实例对象的隐藏属性,而prototype是其构造器函数(或者说‘类’)的原型属性;

function Mine() {}

var  hi = new Function(),

       ha = new Object(),

      me = new Mine();

由构造器函数创建的实例对象,也就是用new Function(),new Object(),new Mine()等方法创建的实例对象都有一个隐藏的内部属性,__proto__指向其构造器原型prototype的引用 ,也就是   实例.__proto__ = 构造器.prototype

实例对象和构造器之间通过这个隐藏属性实现通信连接

而其构造的原型又有一个__proto__属性   构造器.prototype.__proto__ = 构造器的构造器.prototype

一直往上找

构造器的构造器.prototype.__proto__  = 构造器的构造器的构造器.prototype;

...(假设该构造器是由父构造器一层一层构造出来的,实际可能只有一两层)

构造器的构造器的构造器.prototype.__proto__ == Function.prototype;

Function.prototype.__proto__ = Object.prototype;

Object.prototype.__proto__ = null;

结束了

function Mine(){
  console.log(this.constructor)
}

var obj = new Mine();

obj.__proto__ == Mine.prototype;//true

console.log(obj.__proto__) // Mine {} 一个空的普通原型对象

obj.__proto__  == Mine //false 说明实例对象的原型链引用是指向其构造的原型属性的而不是直接指向构造器本身的

Mine.prototype.__proto__ == Object.prototype //true

Object.prototype.__proto__ == null;//true

Mine.prototype.__proto__ == Function.prototype //false

var objA = { name:"Mack",sex:'male' };
function Human(){};
Human.prototype=objA;

在还没有实例化之前我们调用Human.__proto__会得到什么呢?

Human.__proto__//function () {}  

var designer=new Human();
designer.name="Jo";
designer.age="26";

现在我们来访问新建对象designer的属性,
designer.name//Jo
designer.age//26

这是新建对象本身就有的属性,当然我们也可以访问designer从其构造器函数那里继承来的属性。

designer.sex;//male;
加载机制,首先会在自身属性中找,没找到就去其原型中找,就好像有一个神秘的链接指向了相关的"原型对象";

//这里有歧义

designer.__proto__== (Human.prototype) == objA;//true;

designer.__proto__== new Human().prototype;//true;

designer.__proto__== Human.prototype;//true

what's the fuck?都尼玛为true,好忧伤的定义啊

_proto_实际上是某个对象实例的属性,而prototype这是其构造器函数的属性,或者说类的原型属性,所以两者并不等价;

typeof designer.__proto__;

//object;

typeof designer.prototype;

//undefined;实例对象没有原型属性 所以输出未定义

 

designer.constructor //  ????

typeof designer.constructor.prototype;
//object

神秘链接__proto__是什么鬼的更多相关文章

  1. js原型链接(二)和object类的create方法

    原型链的内部执行方式 <script> function Myclass(){ this.x=" x in Myclass"; } var obj=new Myclas ...

  2. 彻底弄懂JS原型与继承

    本文由浅到深,循序渐进的将原型与继承的抽象概念形象化,且每个知识点都搭配相应的例子,尽可能的将其通俗化,而且本文最大的优点就是:长(为了更详细嘛). 一.原型 首先,我们先说说原型,但说到原型就得从函 ...

  3. 欢迎使用CSDN-markdown编辑器

    私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数. function Box(){ var color = "blue&qu ...

  4. C#异步的世界【下】

    接上篇:<C#异步的世界[上]> 上篇主要分析了async\await之前的一些异步模式,今天说异步的主要是指C#5的async\await异步.在此为了方便的表述,我们称async\aw ...

  5. C#异步(下)

    上篇主要分析了async\await之前的一些异步模式,今天说异步的主要是指C#5的async\await异步.在此为了方便的表述,我们称async\await之前的异步为“旧异步”,async\aw ...

  6. JavaScript面向对象编程指南(五) 原型

    第5章 原型 5.1 原型属性 function f(a,b){ return a*b; }; // length 属性 f.length; // constructor 构造属性 f.constru ...

  7. js中的原型

    一:原型属性 函数本身也是一个包含了方法和属性的对象. 定义一个函数foo(),访问其他对象一样访问该函数的属性: function foo(a, b) { return a * b; } foo.l ...

  8. 【转】C#异步的世界【下】

    [转]C#异步的世界[下] 接上篇:<C#异步的世界[上]> 上篇主要分析了async\await之前的一些异步模式,今天说异步的主要是指C#5的async\await异步.在此为了方便的 ...

  9. 读书笔记-JavaScript面向对象编程(二)

    第5章 原型 5.1 原型属性(所有函数拥有一个prototype属性,默认为空对象) 5.1.1 利用原型添加方法和属性 function Gadget(name,color){ this.name ...

随机推荐

  1. ANT的下载和安装

    下载 下载页面:http://ant.apache.org/bindownload.cgi 安装 撰写本文的时候,最新的ANT版本是1.9.7,它是绿色软件,解压缩得到apache-ant-1.9.7 ...

  2. vijosP1014 旅行商简化版

    vijosP1014 旅行商简化版 链接:https://vijos.org/p/1014 [思路] 双线DP. 设ab,ab同时走.用d[i][j]表示ab所处结点i.j,且定义i>j,则有转 ...

  3. java IO复习(二)

    package com.zyw.file; import java.io.*; /** * Created by zyw on 2016/3/10. */ public class FileTest2 ...

  4. Redis教程03——Redis 发布/订阅(Pub/Sub)

    Pub/Sub 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者).而是发布的消息分到不同的频道,不需要知道什么样的订阅者 ...

  5. Relocation - POJ 2923(状态压缩+01背包)

    题目大意:有个人需要搬家,有N件物品,给个物品的重量是 w[i] 然后又两个车,每个车的载重量分别是C1和C2,求最少需要运输多少次才能把这些物品全部运输完毕. 分析:刚开始就发现物品数不多,想着直接 ...

  6. DataGridView 列大写、列只能输入数字 分类: DataGridView 2014-12-07 08:40 332人阅读 评论(0) 收藏

    列大写: 说明:调用EditingControlShowing事件 private void dgvGoods_EditingControlShowing(object sender, DataGri ...

  7. codechef Turbo Sort 题解

    Input t – the number of numbers in list, then t lines follow [t <= 10^6].  Each line contains one ...

  8. 什么是SEO?SEO干嘛的?怎么做SEO?

    黑帽seo分享了这么多SEO的东西,今天在群时面遇到群亲问到了什么是SEO?SEO是干嘛的?蜗牛认为,是时候让大家知道这些不为外人所知的真相了.且听蜗牛慢慢道来吧. 一.什么是SEO?SEO是干嘛的? ...

  9. hdu 2222 Keywords Search ac自己主动机

    点击打开链接题目链接 Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

  10. Mysql优化相关总结

    Mysql优化相关总结 2016-05-31 数据库集中营 优化顺序: 选择适当的引擎和表结构和数据类型 建立索引,优化sql. 增加缓存,redis.memcache. 主从.主主,读写分离. my ...