首页 > 其他分享 >通俗易懂的js原型链

通俗易懂的js原型链

时间:2023-11-27 11:55:53浏览次数:29  
标签:__ instanceof 通俗易懂 js 原型 left 构造函数

原型链是js基础比较重要的一个环节;

  1. 提到原型链有三个比较重要的概念: 实例 构造函数 以及 原型对象,其中三者的关系:
    image
    构造函数 new =》 创建一个实例;
    构造函数 prototype =》原型对象;
    同时 原型对象 constructor =》 构造函数;
    实例 __proto__ => 原型对象;

  2. new 运算符是如何工作的

    1. 先创建一个空对象;
    2. 将构造函数内部的this指向这个新建的空对象,让其继承构造函数内部属性和方法
    3. 将构造函数原型对象指向这个空对象的,继而实现其继承构造函数原型上的属性和方法
  3. instanceof 原理和 js手写一个instanceof的方法
    instanceof原理:判断一个构造函数的实例的__proto__ 方法 和 构造函数的prototype 是不是指向相同的原型对象
    image
    这也就暴露了instanceof 一个缺点 因为原型链顶层是Object 直到 null
    所以image

    js如何实现类似于instanceof的方法?

    function _instanceof(_instance, _func) {
    	let left = _instance.__proto__
    	let right =  _func.prototype
    	while (true) {
    		if (left === null) return false
    		if (left === right) return true
    		left = left.__proto__
    	}
    }
    

标签:__,instanceof,通俗易懂,js,原型,left,构造函数
From: https://www.cnblogs.com/yejingxiao/p/17645513.html

相关文章

  • Java读取JSON文件
    读取json文件的结果利用fastjson进行转换为json对象或集合进行操作依赖的fastjson包<dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.17</version>......
  • Jayway JsonPath-提取JSON文档内容的Java DSL | 京东物流技术团队
    介绍JsonPath是一种能够提取部分JSON文档属性、对象、数组的语法,支持条件过滤、数学运算、字符串处理等功能。JsonPath与JSON文档就像XPath表达式与XML文档结合使用一样。由于JSON结构通常是匿名的,并不一定和XML一样具有“根成员对象”,因此JsonPath假定分配$给外层对象的抽......
  • 大模型训练过程中用到的 gpt_merge.txt和gpt_vocab.json是干什么用的?
    下面这边文章讲的非常清晰,原文链接:https://blog.csdn.net/ljp1919/article/details/113616226......
  • 配置 webpack.production.config.js
    配置webpack.production.config.js开发环境下,可以不用考虑系统的性能,更多考虑的是如何增加开发效率。而发布系统时,就需要考虑发布之后的系统的性能,包括加载速度、缓存等。下面介绍发布用配置代码和开发用的不一样的地方。发布到./build文件夹中path:__dirname+"/build",vendo......
  • JSON
    json格式{"name":"John","age":30,"city":"NewYork"}json数组["Google","Runoob","Taobao"]{"name":"网站","num":3,"sites":[&qu......
  • ThreeJS导入失败
    title:ThreeJS导入失败banner_img:https://proxy.thisis.plus/aadc0c1c0eb1c7f5e57ab3b42256cb0.jpgdate:2023-1-1310:00:00categories:-踩坑tags:-ThreeJS问题描述-index.html-src.js-node_modules-three-...在src.js中用如下方式导入ThreeJSimport*......
  • ThreeJS实现屏幕坐标转3d坐标
    title:ThreeJS实现屏幕坐标转3d坐标banner_img:https://drive.studyinglover.com/api/raw/?path=/photos/blog/background/e4127f10a90d5f6fd4f77b0225a19878.jpgdate:2023-2-420:30:00categories:-工具tags:-ThreeJSThreeJS实现屏幕坐标转3d坐标本文使用chatGPT辅......
  • js摄像头拍照、摄像
    备份留着万一用到,转自:https://cloud.tencent.com/developer/article/1357730?from=15425<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE......
  • 【Python爬虫】第10篇:js逆向解析和Mongodb数据库。md集合文档(已分享,附代码)
    本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。全套笔记和代码自取地址:请移步这里感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~共8章,37子模块JS的解析......
  • Eslint 的rules一些配置 (.eslintrc.js文件中的rules选项)
    rules:{//off=0,warn=1,error=2,如果是数组,第二项表示参数option//indent:[2,2],//控制缩进为2eqeqeq:1,//警告使用全等//quotes:[2,'single'],//单引号singleQuote:true,'no-console':0,//不禁用console'no-debugger......