JS原型学习笔记

作者: 招投标秘籍 | 来源:发表于2021-04-18 16:53 被阅读0次

原型被称为js的三座大山之一,对于我来说挺难理解,所以js的基础块学完了我也没整理学习,今天有时间来整理一下学习的笔记.

1.什么叫原型

在javascript中,函数可以有属性。 每个函数都有一个特殊的属性叫作原型(prototype) 。

2.从何引出这个疑问?

我们知道 JS 有对象,比如

var obj = { name: 'obj' } ;
obj.toString()
image.png

大家看到这里有没有疑问,我没对toString()进行赋值,已经有值,所以obj原来是不是已经有东西了呢?这就是我们今天需要讲的原型.
我们看看obj里面有什么


image.png

我们发现 console.dir(obj) 打出来的结果是:

  1. obj 本身有一个属性 name(这是我们给它加的)
  2. obj 还有一个属性叫做 proto(它是一个对象)
  3. obj.proto 有很多属性,包括 valueOf、toString、constructor 等
  4. obj.proto 其实也有一个叫做 proto 的属性(console.log 没有显示),值为 null
    现在回到我们的问题:obj 为什么会拥有 toString 属性?
    答案:
    这跟 proto 有关.
    我们在来看下面的打印结果
    image.png
    我们打印出来的东西可以看出里面也有toString(),所以我们可以看出obj有一个隐藏属性proto,里面储存了Object.prototype对象的地址 ,当obj.toString()当在这里面没找到就在Object.prototype里面找,所以找到了Object.prototype.toString().所以XXX.prototype存储了XXX对象的共有属性,这就是原型.

3.原型的三大公式和公理

3.1JS公式

对象._proto_ === 其构造函数的.prototype(js唯一的公式,可以套用)

3.2根公理

Object.prototype 是所有对象的(直接或间接)原型
加了一个直接或间接,所谓公理就是规定好的

3.3函数公理

所有函数都是由 Function 构造的
任何函数.__proto__ === Function.prototype
任意函数有 Object / Array / Function

4.根据前面的公式我们可以推出js的内存图

image.png

本文为本人的原创文章,著作权归本人和饥人谷所有,转载务必注明来源.

相关文章

  • JavaScript原型学习笔记

    @(JS技巧)[原型] JavaScript原型学习笔记 什么是原型? 每当你去定义一个prototype的时候,...

  • Javascript原型理解(面试篇)

    本文是学习JS原型相关知识后的总结与笔记:学习文章参考《一文吃透所有JS原型相关知识点》 在面试中会被经常问到JS...

  • js原型学习笔记

    就真滴很气 之前一直就是半斤八两的糊弄原型 今天的笔试题,GG 嗨呀 我要死磕了 网上有非常多的文章尝试去解释这个...

  • JS原型学习笔记

    原型被称为js的三座大山之一,对于我来说挺难理解,所以js的基础块学完了我也没整理学习,今天有时间来整理一下学习的...

  • JS原型链学习笔记

    这里推荐两篇很好的博客 和 MDN的文档 帮你彻底搞懂JS中的prototype、proto与constructo...

  • 我的JS笔记汇总

    学习JS的笔记整理: 变量; 类型检测; 类型转换; 作用域; 执行上下文; 函数; 闭包; 模块; 原型; 类;...

  • JS原型链知识学习笔记

    ECMAScript 中描述了原型链的概念,并将原型链作为实现集成的主要方法。其基本思想是利用原型让一个引用类型继...

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • JavaScript原型对象与原型链

    一、前言 原型和原型链是 JavaScript中不可避免需要碰到的知识点,在刚开始学习 JS 时,原型和原型链都是...

  • JS 学习笔记 | 构造函数和原型

    1.构造函数和原型 1.1 对象的三种创建方式--复习 字面量方式var obj = {}; new关键字var ...

网友评论

    本文标题:JS原型学习笔记

    本文链接:https://www.haomeiwen.com/subject/evqvlltx.html