深入理解javascript prototype的相关知识

 更新时间:2019年09月19日 08:33:31   作者:岌岌可危  
这篇文章主要介绍了深入理解javascript prototype的相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

如图比较好的阐述了prototype和__proto__

简单的可以这么理解:

狗类A( function foo()),狗类A的模板描述:A.模板 (foo.prototype)是一个对象object, A.模板有个构造方法

foo.prototype.constructor=function foo()

动物B(function function()), 动物B的模板描述 . B.模板 (function.prototype), B.模板有个构造方法

function.prototype.constructor=function function()

狗C= new 狗类A (f1=new foo())

那么狗c的父类模板=A.模板 即 f1.__proto__= foo.prototype.

狗类A的父类模板=B.模板 即 foo.__proto__=function.prototype

只有函数有prototype,对象是没有的。

但是函数也是有__proto__的,因为函数也是对象。函数的__proto__指向的是Function.prototype。

也就是说普通函数是Function这个构造函数的一个实例。

__proto__可以理解为指向父类模板的一个引用。用来查找父类模板的

prototype可以理解为对象的一个属性,用来描述自身如果作为模板是如何定义的,该模板有方法和属性。

function foo() 自身如果作为模板prototype,它自身会有构建函数,模板的属性constructor就是描述这个构建函数。

foo()这个对象实际上是隐含从父类模板继承过来的,这个父类模板就是function function()的模板属性。即它的prototype.

设计者定义的时候名称比较混淆不利于理解。这是javascript的败笔。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JS对象数组去重的3种方法示例及对比

    JS对象数组去重的3种方法示例及对比

    这篇文章主要给大家介绍了关于JS对象数组去重的3种方法,三种方法分别包括使用filter和Map、使用reduce以及for循环,文中每个方法都给出了示例代码,需要的朋友可以参考下
    2021-07-07
  • 使用TypeScript V8来改进您的JavaScript代码

    使用TypeScript V8来改进您的JavaScript代码

    TypeScript V8是一个强大的JavaScript类型系统,它可以帮助你发现JavaScript代码中的错误和潜在问题,并在编译时捕获它们,以便您可以解决它们,TypeScript V8为JavaScript提供一系列的类型注释,包括自定义类型和其他高级功能
    2023-08-08
  • JavaScript实现即时通讯的 4 种方案

    JavaScript实现即时通讯的 4 种方案

    这篇文章主要给大家分享了JavaScript实现即时通讯的 4 种方案,其实就是服务端如何将数据推送到浏览器,下面详细的文章内容,需要的小伙伴参考一下,洗碗给对你有所帮助
    2022-02-02
  • webpack4 SplitChunks实现代码分隔详解

    webpack4 SplitChunks实现代码分隔详解

    这篇文章主要介绍了webpack4 SplitChunks实现代码分隔详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • JS实现监控微信小程序的原理

    JS实现监控微信小程序的原理

    这篇文章主要介绍了JS实现监控微信小程序的原理,本文通过实例代码相结合的形式给大家介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • uniapp禁止遮罩层下页面滚动的解决方法

    uniapp禁止遮罩层下页面滚动的解决方法

    在uniapp的开发中用过弹窗的都知道有个bug就是滑动弹窗的内容底部页面也会跟着滑动,所以这篇文章主要给大家介绍了关于uniapp禁止遮罩层下页面滚动的解决方法,需要的朋友可以参考下
    2023-09-09
  • JavaScript 拖拽实例代码

    JavaScript 拖拽实例代码

    这篇文章主要介绍了JavaScript 拖拽实例代码的相关资料,需要的朋友可以参考下
    2016-09-09
  • js实现的下拉框二级联动效果

    js实现的下拉框二级联动效果

    这篇文章主要介绍了js实现的下拉框二级联动效果,涉及JavaScript针对页面元素的遍历与节点操作相关技巧,需要的朋友可以参考下
    2016-04-04
  • Javascript 引擎工作机制详解

    Javascript 引擎工作机制详解

    我们需要引入几个相关的概念:执行环境栈、全局对象、执行环境、变量对象、活动对象、作用域和作用域链等,这些概念正是JS引擎工作的核心组件。这篇文章的目的不是孤立的为你讲解每一个概念需要的朋友可以参考下
    2016-11-11
  • JS forEach和map方法的用法与区别分析

    JS forEach和map方法的用法与区别分析

    这篇文章主要介绍了JS forEach和map方法的用法与区别,结合实例形式分析了forEach和map方法的功能、原理、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-02-02

最新评论