深入理解Javascript
文章平均质量分 81
《深入理解JavaScript》专栏旨在为读者提供JavaScript语言的深度解析,从基础语法到高级特性,全面探讨JavaScript的核心概念和技术细节。本专栏适合有一定JavaScript基础的读者,通过系统的学习和实践,帮助读者深入理解JavaScript的工作原理,提升编程和解决问题的能力
三月的一天
计算机专业硕士毕业,多年的数学建模、复杂网络、软件开发、前后端技术开发的实践经验。作为一名博客作者,我致力于将我所学到的知识和经验分享给更多的人。我相信,知识的力量在于传播,而分享则是知识传播的最佳途径。我的博客内容涵盖了计算机专业基础知识、数学建模相关实践、复杂网络论文研究、LeetCode算法刷题经验、C语言开发经验、前端Vue、React框架开发实战相关知识。旨在为读者提供有价值的信息和实用的技巧。如果您对我的博客内容感兴趣,或者有任何问题想要交流,您可以通过评论或者私信与我联系!
展开
-
如何利用js操作复杂css布局,实现元素的显示隐藏,并自适应宽高
在大多数业务场景中我们使用的都是固定布局,即使是flex布局也是固定好的,顶多是一侧固定宽度,剩余自适应缩放。但是有些场景可能需要对窗口进行拆分,比如,设置一个分屏,将内容区域一分为二。或者,将屏幕动态的拆分为不规则行列布局,比如左侧一列,右侧垂直等分两行等布局。这种场景要利用js去改变元素的css样式了。主要是操作dom,获取dom元素,给dom加style或class。复杂的css布局,除了获取要改变元素自身的dom节点,还可能操作兄弟节点,或者父级节点。因为自身定位的改变也会影响其他元素。原创 2024-10-11 11:09:14 · 536 阅读 · 0 评论 -
JavaScript原理篇——Promise原理及笔试题实战演练
你真的完全了解promise吗,请输出以下代码题的结果答案:如果你回答的和答案不一致,请务必接收下面的Promise解题指南。原创 2024-05-10 13:44:09 · 1083 阅读 · 2 评论 -
JavaScript原理篇——理解对象、构造函数、原型、继承
在JavaScript中,几乎所有的东西都是对象,包括基本数据类型的包装对象。对象是属性的集合,每个属性都有一个键和一个值。对象可以通过字面量、构造函数或Object.create()等方式创建。:构造函数是用来创建对象的函数,通过new关键字调用构造函数可以创建对象实例。构造函数可以定义对象的属性和方法,实例化后的对象可以共享构造函数中定义的方法。:每个JavaScript对象都有一个原型对象,可以通过__proto__访问。原型是对象的模板,包含对象共享的属性和方法。构造函数的prototype。原创 2024-05-09 15:31:41 · 632 阅读 · 0 评论 -
JavaScript手写专题——图片懒加载、滚动节流、防抖手写
在一些图片量比较大的网站(比如电商网站首页,或者团购网站、小游戏首页等),如果我们尝试在用户打开页面的时候,就把所有的图片资源加载完毕,那么很可能会造成白屏、卡顿等现象,因为图片真的太多了,一口气处理这么多任务,浏览器做不到啊!我们再想,用户真的需要这么多图片吗?不对,用户点开页面的瞬间,呈现给他的只有屏幕的一部分(我们称之为首屏)。只要我们可以在页面打开的时候把首屏的图片资源加载出来,用户就会认为页面是没问题的。至于下面的图片,我们完全可以等用户下拉的瞬间再即时去请求、即时呈现给他。原创 2024-05-09 13:33:35 · 1062 阅读 · 1 评论 -
JavaScript原理篇——深入理解作用域、作用域链、闭包、this指向
执行上下文描述了代码执行时的环境,包括变量对象、作用域链和 this 值;而作用域则决定了变量和函数的可访问性范围,分为全局作用域和局部作用域。变量对象用于存储变量和函数声明:是与执行上下文相关联的数据结构,用于存储在上下文中定义的变量、函数声明和形参等信息。作用域链用于解析标识符的查找路径:是 JavaScript 中用于解析标识符(变量名)的机制,它由多个执行上下文的变量对象组成的链表结构。当代码在某个执行上下文中查找变量时,会首先查找当前上下文的变量对象,如果找不到,则会沿着作用域链向上一级上原创 2024-04-26 00:57:21 · 1018 阅读 · 2 评论 -
javaScript手写专题——实现instanceof/call/apply/bind/new的过程/继承方式
手写实现函数的三种调用方式:call、apply 和 bind;手写new的过程;手写类的继承包括原型链继承、构造函数继承和组合继承原创 2024-04-08 21:10:03 · 1650 阅读 · 0 评论 -
javaScript手写专题——防抖/节流/闭包/Promise/深浅拷贝
本文介绍了面试中常见的手写JS场景题目:如手写防抖、节流;手写Promise封装、手写深拷贝浅拷。手写深拷贝需要考虑很多细节,需要根据具体情况来进行处理。在前面的实现中,我们已经考虑了一些常见的情况,但是还有很多其他的情况需要考虑。在手写深拷贝时,需要考虑以下几种场景:特殊的对象:正则表达式、日期对象、Error 对象,使用构造函数创建新的对象Fuction对象:对象可能会有函数属性,例如构造函数或方法,这种情况下需要将函数原样复制过来,而不是执行函数。特殊类型:symbol迭代复制:Map原创 2024-04-07 15:57:31 · 1445 阅读 · 0 评论 -
javaScript——BFS结合队列求迷宫最短路径
思路:采用广度优先搜索的方式,尝试让某个点朝四个方向各走一步,如果都能走通,将这些路径和步长入队。假设由两个点分别向下、向右走一步都到了终点,并且两者的step相等,那么,先遍历的也就是向下的这个路径作为目标输出。问题描述:由m*n的矩阵构成了一个迷宫, 矩阵中为1的元素表示障碍物,不能走,为0表示可以走。从第一个点开始,将它shift出去,然后尝试向四周走一步,如果走的通,将那个节点和路径信息入队,依次遍历所有方向。数组中每项存储的是当前遍历的节点座标,走到该节点的步长,节点携带的路径数组。原创 2024-03-20 16:16:00 · 517 阅读 · 0 评论 -
图解js原型、原型链、构造函数直接的关系(简单易懂)
对象的原型:对象通过.__proto__找到对象的原型构造函数的原型:构造函数.prototype每个原型都有自己的原型:如Person.prototype.__proto__指向Object的原型js中所有的对象都继承自Object;Object的原型指向为null到此,一个由__proto__指针串起来的原型链就产生了。这里你可以将__proto__理解为链表中的next指针,通过__proto__向上找到对象或构造函数的原型,链表的最后节点是Object,它的__proto__是null。原创 2024-03-12 15:45:03 · 1048 阅读 · 0 评论 -
JS力扣刷题经典100题——两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。原创 2022-12-04 12:27:40 · 791 阅读 · 0 评论 -
js——垃圾回收机制
一、为什么系统需要垃圾回收由于字符串、对象和数组没有固定大小,所有当他们的大小已知时,才能对他们进行动态的存储分配。JavaScript程序每次创建字符串、数组或对象时,解释器都必须分配内存来存储那个实体。只要像这样动态地分配了内存,最终都要释放这些内存以便他们能够被再用,否则,JavaScript的解释器将会消耗完系统中所有可用的内存,造成系统崩溃。JS不像C/C++,他有自己的一套垃圾回收机制(Garbage Collection)。JavaScript的...原创 2022-03-03 21:02:05 · 757 阅读 · 0 评论 -
vue.js——事件循环机制
一、事件循环机制介绍 JS是单线程的语言,浏览器和Node.js定义了各自的Event Loop(事件循环机制)则是用来解决异步问题。将程序分为“主线程(执行栈)”与“Event Loop线程”,“主线程”自上而下依次执行同步任务,“Event Loop线程”将异步任务推入宏任务队列与微任务队列去执行。事件循环机制从整体上告诉了我们 JavaScript 代码的执行顺序 Event Loop即事件循环,是指浏览器或Node的一种解决javaScript...原创 2022-03-03 00:28:40 · 2738 阅读 · 2 评论 -
js闭包的理解和作用
js闭包,保护私有变量的机制;比如说你想使用一个全局变量但是又不想让别的函数使用它,就定义两个函数,在外层函数定义变量,在内层函数中使用。js闭包的定义和特性如下:定义:一个函数访问了此函数的父级及以上作用域变量称这个函数为闭包。1.函数嵌套函数2.嵌套函数内部可以引用函数外部的参数和变量3.参数和变量不会被垃圾回收机制回收闭包示例:function fun1 () { var a = 2; function subFun () { a++;.原创 2022-02-23 22:20:57 · 1966 阅读 · 0 评论 -
关于JavaScript中this对象的指向,及改变的四种情况
this对象的几种情况解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称为函数执行的 上下文对象,根据函数的调用方式的不同,this会指向不同的对象 * 1.以函数的形式调用时,this永远都是window * 2.以方法的形式调用时...原创 2019-07-07 14:53:57 · 1905 阅读 · 0 评论 -
JS删除数组中重复的数字
思路:外循环遍历数组中所有的元素arr[i],内循环遍历当前元素的后面所有的元素arr[j];比较arr[i]和arr[j],如果两者相同,则将内循环即后面的重复元素删除;注意使用splice()方法删除数组中的元素时,会使得刚删除的元素的后面的元素补位,而错过比较,所以需要将索引向前移动一位。<!DOCTYPE html><html> &l...原创 2019-07-06 20:05:16 · 3947 阅读 · 0 评论 -
JS中DOM文档对象模型操作实例
一、DOMDOM,全称Document Object Model文档对象模型。JS中通过DOM来对HTML文档进行操作。只要理解了DOM就可以随 心所欲的操作WEB页面。Document 文档 – 文档表示的就是整个的HTML网页文档 Object对象 – 对象表示将网页中的每一个部分都转换为了一个对象。 Model模型 – 使用模型来表示对象之间的关系,这样方便我...原创 2019-07-09 18:54:18 · 803 阅读 · 0 评论 -
JavaScript正则表达式量词、转义字符、练习,与字符串的操作
正则表达式——创建1.使用正则表达式对象创建语法:var 变量 = new RegExp("正则表达式","匹配模式");//使用typeof检查正则对象,会返回object举例:var reg = new RegExp("a"); //这个正则表达式可以来检查一个字符串中是否含有a在构造函数中可以传递一个匹配模式作为第二个参数,可以是 i忽略大小写,g 全局匹配模式v...原创 2019-07-09 14:34:44 · 457 阅读 · 0 评论 -
JavaScript字符串的相关方法
charAt()方法 * - 可以返回字符串中指定位置的字符 * - 根据索引获取指定的字符charCodeAt()方法 * - 获取指定位置字符的字符编码(Unicode编码)formCharCode()方法 * - 可以根据字符编码去获取字符co...原创 2019-07-07 17:06:25 · 117 阅读 · 0 评论 -
W3Cschool初级脚本算法难题解析——JS对数组和字符串的常见操作
最近无聊刷了一波W3Cschool上的前端课程,三天获得了前端基础编程实战课程通关证书(共226关)因为本科毕业设计做过前端所以比较容易完成。但对脚本算法是一窍不通,今天花了一点时间做了脚本算法编程实战课程的初级脚本算法。遇到了一些难点,不过有幸逐一解决了,每当解决一个算法的时候,感觉整个心情都舒畅起来。闲话结束,进入实战。算法:1.寻找最长的单词实验要求:返回提供的句子中最长的单词...原创 2019-04-26 22:02:40 · 239 阅读 · 0 评论