1.js中除了原始数据类型 都是对象。
包括函数也是对象,可能类似于C++函数对象把 应该是通过解释器
进行()操作符重载或其他操作, 用的时候把它当函数用就行
但是实际上本质是一个对象

原型也是一个对象,所以也称作原型对象

2. js中所有对象都有 __proto__ 属性,指向他的原型对象

一般原型对象{}内部包含两个必要属性constructor 和__proto__,__proto__指向原型对象的原型对象

3. js中函数对象具有prototype属性

(函数对象可以被当作constructor使用

constructor被翻译成构造器/构造函数)

prototype指向 这个函数实例化出的对象的原型(__proto__)

如果新建一个构造函数 那么他的pototype由解释器自动生成,结构应该是这样的

{

  constructor: // 这个构造函数本身

__proto__: Object // 指向Object的"原型对象", 之所以这么指向,是因为这个prototype属性要赋给他实例化出来的对象的__proto__ 所以这么指向

}

4.Object的__proto__属性是null

练习:

问题1:

function a(){}

解释一下a的__proto__属性

答:

a是一个对象,所以a有__proto__属性, 指向a函数对象的原型

a函数对象的原型 是Function函数对象

Funciton函数对象的原型(__proto__属性)是Object函数对象

Object函数对象的原型(__proto__)指向null 即那个原型对象

解释一下a的prototype属性

prototype属性是在初始化函数对象的时候解释器自动加上的,方便new操作符内部实现时的调用

{

  constructor://a本身

__proto__:Object

}

问题2为什么要有prototype这个属性?

究其原因,是给解释器内部实现new操作符时使用的,

new操作符的处理函数 可以查看下面资料

资料一:

https://lazy2009.iteye.com/blog/1675059

资料二:

知识点:

Object.create的内部原理:

Object.create =  function (o) {

    var F = function () {};
   // 这里给函数prototype属性赋值
    F.prototype = o;
  // 这个prototype属性给new操作符使用
    return new F();
};

Javascript中的原型链,__proto__和prototype等问题总结的更多相关文章

  1. 图解JavaScript中的原型链

    转自:http://www.jianshu.com/p/a81692ad5b5d typeof obj 和 obj instanceof Type 在JavaScript中,我们经常用typeof o ...

  2. 一张图搞懂 Javascript 中的原型链、prototype、__proto__的关系 转载加自己的总结

    1. JavaScript内置对象 所谓的内置对象 指的是:JavaScript本身就自己有的对象 可以直接拿来就用.例如Array String 等等.JavaScript一共有12内置对象    ...

  3. Javascript中的原型链、prototype、__proto__的关系

    javascript  2016-10-06  1120  9 上图是本宝宝用Illustrator制作的可视化信息图,希望能帮你理清Javascript对象与__proto__.prototype和 ...

  4. JavaScript中的原型链原理

    工作中经常解除到prototype的概念,一开始错误的认为prototype是对象的原型链,其实prototype只能算是JavaScript开放出来的原型链接口,真正的原型链概念应该是__proto ...

  5. JavaScript中的原型链和继承

    理解原型链 在 JavaScript 的世界中,函数是一等公民. 上面这句话在很多地方都看到过.用我自己的话来理解就是:函数既当爹又当妈."当爹"是因为我们用函数去处理各种&quo ...

  6. JavaScript中的原型、原型链、原型模式

    今天,咱来聊聊JavaScript中的原型跟原型链 原型跟原型模式 这一块的知识,主要是设计模式方面的. 首先,我们知道JavaScript是面向对象的.既然是面向对象,那它自然也有相应的类跟对象等概 ...

  7. 深入了解JavaScript中基于原型(prototype)的继承机制

    原型 前言 继承是面向对象编程中相当重要的一个概念,它对帮助代码复用起到了很大的作用. 正文 Brendan Eich在创建JavaScript时,没有选择当时最流行的类继承机制,而是借鉴Self,用 ...

  8. 原型prototype、原型链__proto__、构造器constructor

    创建函数时,会有原型prototype,有原型链__proto__,有constructor.(构造函数除外,没有原型) . prototype原型:是对象的一个属性(也是对象),使你有能力向对象添加 ...

  9. 前端知识体系:JavaScript基础-原型和原型链-理解原型设计模式以及 JavaScript中的原型规则

    理解原型设计模式以及 JavaScript中的原型规则(原文地址) 1.原型对象:我们创建的每一个函数(JavaScript中函数也是一个对象)都有一个原型属性 prototype,原型属性实质上是一 ...

随机推荐

  1. codeforces 257B

    #include<stdio.h> #define mod 1000000007 int main() { __int64 n,m,i,j,k,x,y,z; while(scanf(&qu ...

  2. 转载 - Catalan数(卡特兰数)

    出处:http://blog.sina.com.cn/s/blog_6aefe4250101asv5.html 什么是Catalan数 说到Catalan数,就不得不提及Catalan序列,Catal ...

  3. CodeForces - 340 C - Tourist Problem

    先上题目: A - Tourist Problem Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

  4. Shell、Xterm、Gnome-Terminal、Konsole简介(转)

    什么是Shell? 简单的说, Shell就是一个小程序,这个小程序可以接受来自键盘的命令并把这些命令发送到操作系统,再有系统来执行.在过去,在安装有Unix的计算机上,这是唯一的可用的交互式操作.而 ...

  5. 搭建单机CDH环境,并更新spark环境

    搭建单机CDH环境,并更新spark环境 1,安装VMWare Player,http://dlsw.baidu.com/sw-search-sp/soft/90/13927/VMware_playe ...

  6. 实现icon和文字垂直居中的两种方法-(vertical-align and line-height)

    方法一:vertical-align 在w3school定义:该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐 百思不得骑姐 然后Google,反正在w3schools上面并没有找到定义 仅 ...

  7. 关于JOS 未对全部内存分页映射之前 物理地址映射问题的思考

    在kern/pmap.c 里面会又以下这段代码,要知道boot_alloc只会分配线性地址,真正建立虚拟页和物理页映射关系的在后面的page_alloc. ////////////////////// ...

  8. poj--2236--棋盘问题(dfs)

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31183   Accepted: 15469 Descriptio ...

  9. npm run dev 出现警告

    WARNING in ./node_modules/_webpack@3.10.0@webpack/buildin/global.js There are multiple modules with ...

  10. mysqls,为node.js而编写的sql语句生成插件 (crud for mysql).

    It is written in JavaScript,crud for mysql.You can also use transactions very easily. mysqls 一款专为nod ...