js 基础补充3
1. 闭包
在函数内部定义的函数,可以访问改函数的属性和方法
私有属性 延长变量的生命周期,更好的避免命名冲突
缺点:内存消耗比较大,不建议频繁使用
2. js 原型 原型链
访问对像的属性方法,不光会在对象上查找还会在原型上查找 每个对象都有一个原型对象
指向构造函数的原型protoType
原型对象也存在原型,类推一级一级给上查找,形成了原型链
Person 实例对象 p1
p1.__proto__ === Person.prototype
Person.prototype.__proto__ === Object.prototype
Object.prototype.__proto__ === null
Object.__proto__ === Function.prototype
3. js 继承
不使用Object.create()
原型链 child.prototype = new Parents() 指向同一内存地址互相影响
构造函数 function child(){Parents.call(this)} 只能反问函数内部定义的属性方法 不是完整的原型链
组合 1+2 调用两次方法 影响性能
使用Object.create()
原型式 内存地址互相影响
寄生 不能继承原型是上的方法
整体组合 类似 ES6 新增的 extends
4. this
箭头函数的this 在创建时候已经确认了
绑定方式
默认 没有其他规则 this 默认指向全局对象(除严格模式下)
隐式绑定是指通过对象调用函数时,this 指向调用该函数的对象。
new 绑定是指通过 new 关键字来创建一个新对象时,this 指向新创建的对象。
显示(apply bind call ) call 返回的函数 列表
this在不同上下文 指向不同属性方法
apply call bind 的区别
三者都是用于显示的改变this指向的
第一个参数表示this指向的对象,若为空/null 则指向windows
第二个参数 apply 以数组形式传递,call 以参数列表的形式传递 两者都只能一次传递 bind可以多次传递
apply call 都是立即执行 (一次性修改)bind 返回修改this后的函数,需要手动执行(永久修改)
function test(...args){console.log(...args)console.log(this.name,this.age);} const _obj = {name:'lili',age:18 } test.apply(_obj,[1,2,3]) test.call(_obj,1,2,3) const newFun = test.bind(_obj,1) newFun(2,3)
5. instanceof typeof 区别
instanceof(实例是否属于 对象 没法准确判断基本数据类型) typeof (基本数据类型 不能区分数组和对象)
可以使用Object.prototype.toString.call() 判断
6.new 操作符干了什么(new 操作符用于创建构造函数的实例对象)
1.创新一个新的对像
2.把对象的原型绑定到构造函数的原型
3.将构造函数中的 this 绑定到新创建的对象
5. 构造函数没有return ,则返回新对象
手写 new 操作符
7. 执行上下文
执行上下文: 代码运行时所在的环境
全局 ,函数 ,eval Eval 函数执行时会创建一个 eval 执行上下文
创建阶段 (变量方法 this 作用域链) 词法环境 提供变量函数声明(静态) ,变量环境根据这些信息存储管理值 =>
执行阶段 代码执行 =>
回收 执行上下文出栈
执行栈 先进后出
8.事件
事件:用户和网页交互的结果
事件流:事件在页面传递顺序
三个阶段
捕获阶段 (从大到小) -》目标阶段-》冒泡阶段 (小小到大
事件模型:定义如何处理事件
DOM Level 0 和 DOM Level 2 是两种主要的事件模型。
直接在标签上添加On-Event 例如OnClick 不能移除 不能重复使用
利用 addEventListener('click',()=>{}) 一次添加定多个事件处理程序
事件代理
把一个/或一组响应事件委托给另一个事件 (在冒泡阶段),真正绑定的是父元素
场景 : 监听多个li变化,把事件绑定在ul上
优点:动态绑定减少工作量,减少整个页面所需内存,提高效率
避免对鼠标移动绑定,需要计算详细位置,消耗更大 focus blur 没有冒泡机制,不能代理
事件循环
相关文章:
js 基础补充3
1. 闭包 在函数内部定义的函数,可以访问改函数的属性和方法 私有属性 延长变量的生命周期,更好的避免命名冲突 缺点:内存消耗比较大,不建议频繁使用 2. js 原型 原型链 访问对像的属性方法,不光会在对象上查找还会在…...
Invalid bean definition with name ‘employeeMapper‘ defined in file
参考以下博客: <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version> </dependency> 总结: 1. 拉取老项目的时候要特…...
悦享驾驶,乐在旅途,首选江铃集团新能源易至EV3青春版
金秋时节,天高气爽,正是出游的好时节。不论是家庭自驾游,还是朋友结伴出游,一款好看又好开的车绝对是提升旅行品质的重要因素。江铃集团新能源易至汽车EV3青春版,凭借其超高安全性、便捷操作性、卓越性能,成…...
测试WIFI和以太网的TCP带宽、UDP带宽和丢包率、延时
一、测试TCP、UDP的带宽 作为服务器:iperf3 -s -i 1 (或者用CloudCampus软件,或者iperf magic) Wi-Fi 发送、接收吞吐率的测试_magic iperf-CSDN博客 车机作为iperf3服务器,电脑作为iperf3得客户端,分别…...
redis 第155节答疑 源码分析Hash类型ziplist结构和zlentry实体解析
155属性 zlbytes zltail zllen entryX zlend 类型 uint32 t uint32 t uint16 t 列表节点 uint8 t 长度 4字节 4字节 2字节 不定 1字节 用途 记录整个压缩列表占用的内存字节数:在对压缩列表进行内存重分配,或者计算 zlend 的位置时使用 记录压缩列表表尾节点距离压缩…...
IDE使用技巧与插件推荐
集成开发环境(IDE)是开发者日常工作中的重要工具,合理使用IDE和合适的插件,能大大提高开发效率。本文将分享常见IDE(如VS Code、IntelliJ IDEA等)的一些高效使用技巧,以及开发过程中常用的插件推…...
1020接口测试面试题随记
1.测试中对于上下游承接的业务是怎么处理的 针对上下游承接的业务,我会采取以下措施进行处理:首先,明确上下游系统的接口和依赖关系,确保理解数据流和业务逻辑的连接点。其次,进行接口测试,验证上下游系统…...
Zotero7最新(2024)翻译问题——配置 百度API翻译
在使用翻译之前,首先要确保已经安装了插件:Translate for Zotero 关于插件的安装可以参考这篇文章: Zotero7最新(2024)安装、配置步骤-CSDN博客 接下来进入正题。 当使用Zotero7对英文文献翻译时,可能会…...
python程序设计员—练习笔记
目录 基础处理 字符串列表字典运算符正则表达式re库requestsBeautiful Soupjieba库分词模式基于TF-IDF算法的关键词提取 基于TextRank算法的关键词提取pandas 打开有多个表的.xlsx文件 基础处理 字符串 str_ str_.lower()lower()函数:将字符中的大写字母转换成小…...
1.DBeaver连接hive数据库
1.hive开启远程服务,linux中直接输入:hiveserver2 2.解压dbeaver和hive-jdbc-2.1.1.zip 3.双击打开 4.数据库,新建连接 5.搜索hive 6.配置参数 7.编辑驱动设置 8.添加jar包 9.测试连接 10.右击,新建sql编辑器 11.执行sql 12.调整字…...
CODESYS随机动态图案验证码制作详细案例(三)
#使用CODESYS软件模仿网页端动态图案验证码的制作详细案例# 前言: 通过上篇图案验证码的实际测试,我们已经完成了该案例的制作,但是在项目应用中,我们想对该功能直接调用,就需要将具有一定功能的程序代码或可视化进行封装成库文件。我们熟知,CODESYS有丰富的库文件,有…...
NodeJS 使用百度翻译API
在大数据处理中,经常需要大批量地翻译短小的文字,使用在线翻译平台的API 调用能够大幅度提高效率。 最近尝试了一下。 第一步在百度翻译开放平台注册 百度翻译开放平台 (baidu.com) 申请APPID 和SECRET加密码 源代码(mjs) …...
摩熵数科数据产品阵容BCPM
摩熵数科基本介绍 摩熵数科(成都)医药科技有限公司BCPMdata Pharma Technology (Chengdu)Co.,Ltd以“探索生命科学数据本源,构建全产业链数据应用生态”为愿景,致力于成为生命科学领域全球领先的数据系统与…...
ros2 .idl文件生成C、C++代码
一、包目录结构 rosidl_generator_c 依赖rosidl_cmake、rosidl_typesupport_interface、ament_index_python、rosidl_parser rosidl_generator_cpp 依赖 rosidl_parser、rosidl_runtime_cpp、rosidl_generator_c rosidl_parser :The parser for .idl ROS interfa…...
scrapy的xpath在控制台可以匹配,但是到了代码无法匹配(无法匹配tbody标签)
问题 使用xpath-helper可以匹配到,然后scrapy却无法 然后写入html来看看 发现根本就没有tbody,太可恶了 解决 方法1 不使用tbody就可以 方法2 使用或运算符 | big_list response.xpath("//div[classChannelClasssNavContent]/table/tbody/tr[1]/td/table/tbody/t…...
OpenCL内存模型
OpenCL将内存划分成主机内存和设备内存。主机内存可在主机上使用,其并不在OpenCL的定义范围内。使用对应的OpenCL API可以进行主机和设备的数据传输,或者通过共享虚拟内存接口进行内存共享。而设备内存,指定是能在执行内核中使用的内存空间。…...
Commvault Cloud如何改变网络弹性游戏规则?
近段时间有点被Commvault与AWS“刷屏”了:9月,Commvault宣布将收购AWS关键云数据保护领域技术领导者Clumio公司;10月,Commvault宣布将在AWS上推出Commvault Cloud网络弹性平台。 种种偶然背后往往隐藏着必然。作为混合云网络弹性和…...
echarts环形饼图自定义边框、标题及图例
目录 1、官网找示例 2、初步改造有个雏形 3、细节改造和优化 4、全部代码 5、原始效果和最终效果对比 看下效果图,和普通的饼图很明显的区别就是: 1有明显的白色边框线 2圆环中心自定义内容标题 3需要设置图例位置与内容 我通常的实现思路就是官网找例子再一步一步改…...
Android SELinux——上下文Context源码(十)
通过前面的文章我们知道,SELinux 中的上下文(contexts)包含很多类型,这里我们就来看看Androd 源码中 上下文 SELinux Contexts 的代码结构。 一、Contexts源码 源码位置:/system/sepolicy/private 1、file_contexts file_contexts 文件用于定义系统中各个文件和…...
责任链模式下,解决开闭原则问题实践
前言 在现代软件工程中,设计模式是解决常见问题的有效工具之一。它们吸收了前人的经验,不仅帮助开发者编写更清晰、更可维护的代码,还能促进团队之间的沟通和协作。责任链模式(Chain of Responsibility Pattern)作为一…...
多重细胞因子检测及其技术综述
一、细胞因子概述细胞因子是一类由免疫细胞(如单核细胞、巨噬细胞、T细胞、B细胞及自然杀伤细胞等)及部分非免疫细胞(如内皮细胞、表皮细胞、成纤维细胞等)在相应刺激诱导下合成并分泌的小分子蛋白质,具有广泛的生物学…...
2026设备管理系统选型标准(技术向):8大核心维度,适配信创+全行业场景
对于企业IT运维、采购人员而言,设备管理系统选型需兼顾技术适配、合规要求、落地效率与长期扩展性。本文从技术与实践角度,梳理出8大核心选型标准,重点覆盖独享云部署、Excel导入能力、自定义扩展、信创适配等关键维度,为技术选型…...
底特律汽车产业转型:从全球平台战略到创新生态重构
1. 从废墟中重生:底特律汽车产业的韧性复苏如果你在2010年前后关注过全球汽车产业,或者对美国的工业经济史稍有了解,那么“底特律”这个名字,在当时几乎就是“衰败”与“绝望”的同义词。这座曾经的“汽车之城”,在200…...
Git Conflict Resolution
1. 这篇文章解决什么问题? Git 冲突不是异常情况,而是多人协作和分支开发里的正常现象。 常见问题包括: 1. 为什么会产生冲突? 2. 冲突文件里的 <<<<<<<、、>>>>>>> 是什么?…...
Docker 的了解和使用
1. 虚拟化全虚拟化:虚拟机的操作系统可以和宿主机的操作系统完全不同。os层虚拟化:操作内核相同,软件虚拟化。2. docker安装 Docker容器本质上是Linux容器,它需要Linux内核环境才能运行。在Windows上直接运行Docker,需…...
Arm编译器在嵌入式开发中的优化实践
1. Arm编译器嵌入式开发环境概述在嵌入式系统开发领域,工具链的选择往往决定了最终产品的性能上限。作为Arm架构的"原生"编译器,Arm Compiler for Embedded凭借其深度优化的代码生成能力,在物联网设备、工业控制器等资源受限场景中…...
大模型选型生死局(企业CTO私藏对比清单):Claude在长文档法律分析胜出32%,Gemini在实时多跳检索快4.8倍——你的业务该选谁?
更多请点击: https://intelliparadigm.com 第一章:大模型选型生死局:Claude vs Gemini核心能力全景图 在企业级AI应用落地的关键阶段,模型选型已远非单纯比拼参数量或基准分数,而是对推理鲁棒性、上下文工程适配度、多…...
如何快速搭建AI聊天前端:SillyTavern完整教程与角色扮演系统指南
如何快速搭建AI聊天前端:SillyTavern完整教程与角色扮演系统指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 想象一下,你能够与任何AI角色进行沉浸式对话&#…...
TinyRedis随笔
在TinyRedis的内存与AOF之间的关系中,AOF接入点在命令层中,因为只有在执行写命令,修改DB内存之后,再对AOF文件进行写入。但是这里也存在一个问题,如果对aof文件写入失败了呢,那就会造成内存与aof文件数据不…...
Apollo Save Tool:3步解决PlayStation存档管理难题的终极方案
Apollo Save Tool:3步解决PlayStation存档管理难题的终极方案 【免费下载链接】apollo-ps4 Apollo Save Tool (PS4) 项目地址: https://gitcode.com/gh_mirrors/ap/apollo-ps4 你是否曾为丢失珍贵的游戏进度而懊恼?是否在主机升级时面临数百个存档…...
