前端开发js里的__proto__和prototype的理解和区别

1. 概念说明

  1. 在js里,万物皆对象。方法(Function)是对象,原型(Function.prototype)是对象。实例(new Function)也是对象,因此,它们都会具有对象共有的特点。
    所以这里涉及到对象有函数对象,原型对象、实例对象,说明的时候可以省略了对象两个字方便在说法上有区别,不然容易搞混把自己搞晕了。

  2. 实例对象是由函数对象实例化出来的。

  3. 原型对象是由函数对象包含所有实例共享的属性和方法形成的。

  4. __proto__属性确切的名称是[[prototype]],因为[[prototype]]只是一个标准,而针对这个标准,不同的浏览器有不同的实现方式,在主流的浏览器中,都用__proto__来代表[[prototype]]属性

  5. __proto__属性存在于函数、原型、实例当中都有的,它是形成原型链的关键属性

  6. prototype属性是只有函数才特有的属性,当你创建一个函数时,js会自动为这个函数加上prototype属性,值是一个空对象。所以,函数在js中是非常特殊的,是所谓的一等公民

2. __proto__和prototype关系

参考文章:https://www.cnblogs.com/caihongmin/p/17993066

person1.__proto__==person2.__proto__==Person.prototype,都是指向了原型,(项目开发一般通过prototype给原型添加通用方法,然后实例就可以直接使用),关系如下:

原型链是通过 __proto__属性关联起来的,(我们平时项目开发很少直接使用__proto__这个属性):

posted @   yongfengnice  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2019-12-27 android开发FontMetrics的理解
点击右上角即可分享
微信分享提示