原型与原型链

原型

  • 每一个函数都有一个属性:prototype,默认指向object空对象,就是原型对象,原型对象有一个constructor属性,指向函数对象
  • 每一个实例化对象都有一个属性 proto ,默认指向构造函数的原型对象(是构造函数原型对象的一个引用)
 var Fun = function(){// console.log("构造函数")}console.log(Fun.prototype.constructor === Fun) // truevar fu = new Fun()console.log(fu.__proto__ === Fun.prototype) //trueFun.prototype.newfun = function(){console.log("新方法")}fu.newfun()

[外链图片转存失败(img-dSAsDvPJ-1562680215660)(image/proto.png)]

原型链

  • 所有函数都是Function的实例,包括Function()自己和Object(),也就是所有函数都有一个__proto__属性,指向Function的显式原型(Function.prototype)
  • Object是所有对象的构造函数,寻找对象的属性或方法时,最终会找到Object,Object的隐式原型是Null,如果在Object中还没找到对应的属性或方法,就会为underfind
console.log(Function.prototype)
console.log(Fun instanceof Function) //true
console.log(Object instanceof Function) //true
console.log(Function instanceof Object) // true
console.log(Function instanceof Function) //trueconsole.log(Object.prototype === Fun.prototype.__proto__) // true
console.log(Object.prototype.__proto__) // nullconsole.log(Function.prototype === Object.__proto__) // true
console.log(Function.__proto__ === Function.prototype) // true
console.log(Function.prototype.__proto__ === Object.prototype) // true

[外链图片转存失败(img-8rF7HpZg-1562680215677)(image/proto2.jpg)]

总结

  • 原型与原型链

    • 原型

      • 显式原型与隐式原型

        • 每一个构造函数都会有一个prototype属性,指向一个Object空对象,就是显式原型
        • 每一个实例化对象都有一个__proto__属性,指向其构造函数的显式原型的值
    • 原型链:查找对象的属性和方法
      • 所有函数都是Function的实例,包括Function自己和Object()Function.__proto__ === Function.prototype
      • 所有对象都是由Object实例化而来,
        • 所有对象在寻找某个属性或方法时,最终会找到Object中
        • Object.proto = null
      • Object instanceof Function 为true,而反过来Function instanceof Object 也为true,他们互相是对方的构造函数

JS_13原型与原型链相关推荐

  1. 浅谈JS原型与原型链(一)

    最近学习JavaScript原型与原型链的时候,被这块知识烧得脑壳疼,prototype与__proto__混淆不清.网上各种图解,都画的好复杂,绕老绕去,不明所以,看得越来越糊涂.还是亲自动手敲敲, ...

  2. JS原型与原型链终极详解

     一. 普通对象与函数对象   JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object ,Function 是JS自带的函数对象.下面举例说明 functi ...

  3. js原型和原型链_重学js --原型与原型链

    一.什么是原型: .每个对象都有一个__proto__属性,并且指向它的prototype原型对象 每个构造函数都有一个prototype原型对象 prototype原型对象里的constructor ...

  4. (转)【javascript基础】原型与原型链

    原文地址:http://www.cnblogs.com/allenxing/p/3527654.html 前言 原型是什么 理解原型对象 原型对象 isPrototypeOf hasOwnProper ...

  5. javascript之原型与原型链

    前言   了解JavaScript的原型与原型链有助于我们更深层次的理解这门语言,看过很多相关的文章,写的都很好,下面是根据自己的理解,一步步揭开原型与原型链 正文 一.数据类型   在JavaScr ...

  6. JavaScript原型与原型链(总结篇)

    系列文章推荐 JavaScript原型与原型链(基础篇) JavaScript原型与原型链(进阶篇) JavaScript原型与原型链(总结篇) 1 构造函数和实例对象 构造函数的prototype属 ...

  7. JavaScript对象、原型、原型链知识总结思维导图

    这个思维导图是我对Object,原型,原型链等知识的总结,主要参考高程一书第六章,写完才发现这么多,以后可能会进行精简.内容可能会出现差错,欢迎批评指正.下载==>Github ECMAScri ...

  8. JavaScript对象——原型与原型链

    原型与原型链 一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object .Function 是 JS 自带的函数对象.下面举例说明 va ...

  9. 在图书馆学习红宝书的一天(二)· 慢慢看原型、原型链就看懂了~

    前言 大家好,这里是@IT·平头哥联盟,我是团宠闪光少女--粉刷酱. 要怎么描述编程是个多幸福的工作呢? 我们很多人都想着如果能一辈子编程,那真是太好了. 而现实生活中,对未来的担忧和焦虑常常困扰着我 ...

最新文章

  1. OSI 七层参考模型
  2. 【正一专栏】巴萨四大皆空怎么办
  3. Ansj中文分词Java开发小记
  4. list根据对象进行排序
  5. kotlin将对象转换为map_Kotlin程序将哈希映射(HashMap)转换为列表(List)
  6. linux下php的安装,Linux下PHP安装
  7. poj 2378 (dijkstra)
  8. 物联网形势大好,传感器前景可观
  9. MFC 程序大小及控件自适应不同的屏幕分辨率
  10. 2019南昌网络赛H The Nth Item(二阶线性数列递推 + 广义斐波那契循环节 + 分段打表)题解...
  11. 网络授时设备(NTP时钟服务器)助力智能交通管控平台
  12. 高德地图根据经纬度获取位置
  13. 什么是java全栈工程师
  14. vmware win7 iso 镜像文件下载
  15. 从word中无损批量导出图片
  16. cc150 java_javaMail 的邮件发送包括了抄送(CC),密送(BCC)采用springBoot
  17. fa-cog css,完整的Font Awesome 3.2.1 图标参考
  18. ‘npm‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  19. MyEclipse解决SVN同步冲突问题conflict in the working copy obstructs the current operation
  20. GRP-U8如何修改账套主管

热门文章

  1. 解决: Linux – git: command not found
  2. 注解@Cacheable(value =“XXX“) 实现缓存 -- 失效原因
  3. 【转】Snackbar和Toast的花式使用,这一篇就够了
  4. 4、容器虚拟化网络概述
  5. git push 提交时显示 Empty reply from server的解决办法
  6. 下一步工作的一些思考和问题
  7. 关于resolve非泛型方法不能与类型实参一起使用
  8. Android 通信 EventBus
  9. Spring笔记③--spring的命名空间
  10. SharePoint里如何设置People picker值为当前登录用户值