
JavaScript详解
文章平均质量分 89
详细介绍JavaScript知识,让你JS无忧
遇见~未来
前端仔
展开
-
js高级01-基础深入
当我们访问一个对象中的成员的时候,会优先访问自己的,如果自己没有就访问原型的,如果原型也没有就会访问原型的原型,直到原型链的终点 null. 如果还没有,此时属性就会获取 undefined,方法就会报错 xxx is not a function。在js中,会把任务分为同步和异步,这两者的执行环境不同,同步任务会进入主线程,异步任务会进入事件队列(EventQueue),当主线程代码执行完毕后,会去事件队列中读取对应的异步任务,并推到主线程中执行,不断重复过程,称为事件循环机制(EventLoop)。原创 2025-02-18 01:00:00 · 645 阅读 · 0 评论 -
js高级面试必备知识点(一)
闭包的优点是可以延长变量的作用范围,使变量在函数执行结束后不会立即销毁,直到所有依赖它的函数都调用完毕才会被销毁,例如可以用于实现数据的私有性,通过闭包将数据封装在函数内部,外部无法直接访问。理论上可能导致浏览器频繁调用处理函数,增加性能开销,即便实际上可能不需要处理该事件,例如在一个包含大量子元素的列表中,每次子元素触发事件都可能导致事件代理函数被调用。(包括普通对象、数组、函数等 ),赋值时传递的是内存地址引用,值存储在堆内存中,栈中仅存储指向堆内存的引用地址,当对象比较大时,能减少栈内存占用。原创 2025-02-18 01:00:00 · 1002 阅读 · 0 评论 -
js高级懒加载与预加载
在网页全部加载之前,对一些主要内容进行加载,以提供给用户更好的体验,减少等待的时间。否则,如果一个页面的内容过于庞大,没有使用预加载技术的页面就会长时间的展现为一片空白,直到所有内容加载完毕。很多页面,内容很丰富,页面很长,图片较多。比如说各种商城页面。页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片,只有通过javascript设置了图片路径,浏览器才会发送请求。2)页面加载完成后,判断图片是否在用户的视野内,如果在,则将data-original属性中的值取出存放到src属性中。原创 2025-02-17 20:07:16 · 853 阅读 · 0 评论 -
js高级节流和防抖
举例:比如我们在玩LOL游戏时,当需要回城时,我们触发回城按钮,进入到回城状态进会有一个等待的时间,如果在这个等待时间内有重复去执行回城按钮,这时回城状态并不会做出其他响应,而是等时间到了后才会完成回城。这也说明了,在我们回城的过程中,一直触发回城按钮都是不会响应的,他会按照自己的一个回城时间才做出响应。比如我们平时在使用搜索框时,我们一输入内容就会发送对应的网络请求,如果我们后面一直有在输入内容,那么就会一直发送网络请求。高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。原创 2025-02-16 00:00:00 · 609 阅读 · 0 评论 -
js高级深浅拷贝
原理:用JSON.stringify将对象转成JSON字符串,再用JSON.parse()把字符串解析成对象,一去一来,新的对象产生了,而且对象会开辟新的栈,实现深拷贝。当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝。深浅拷贝主要区别在复杂数据类型,对于基本数据类型,没有区别,改变拷贝的数据,都不会改变原数据。浅拷贝只拷贝引用(地址值),当拷贝的新对象发生改变时,原对象也会发生相同的改变,也就是说,:目标对象,即接收源对象属性的对象。原创 2025-02-16 00:00:00 · 1017 阅读 · 0 评论 -
js高级进程与线程
我们可以将一些大计算量的代码交给web worker运行而不冻结用户界面,但子线程完全受主线程控制,且不得操作DOM,所以,这个新标准并没有改变JS单线程的本质。* 只有当初始化代码执行完后(可能要一定时间), 才会遍历读取回调队列中的回调函数执行。请求响应模型 :浏览器请求数据,服务器接受请求,处理请求,返回数据,浏览器展示数据。是进程内的一个独立的执行单元, CPU的基本调度单位, 是程序执行的一个完整流程。* dom/css模块 : 负责dom/css在内存中的相关处理。原创 2025-02-15 13:42:55 · 1103 阅读 · 0 评论 -
js高级axios的使用
在旧浏览器页面在向服务器请求数据时,因为返回的是整个页面的数据,页面都会强制刷新一下,这对于用户来讲并不是很友好。这不是一种新技术,本质上还是对原生XMLHttpRequest的封装,可用于浏览器和nodejs的HTTP客户端,只不过它是基于Promise的,符合最新的ES规范。在一个项目中,我们会有很多不同的请求,如果都用axios去请求,很容易造成冲突,所以我们可以去创建axios的实例,通过不同的实例去请求,配置。拦截器的作用,用于我们在网络请求的时候,在发起请求或者响应时对操作进行处理。原创 2025-02-13 16:39:11 · 999 阅读 · 0 评论 -
js高级ajax
产生的问题就是ajax的下一次请求,ie浏览器,就会走本地的缓存,而不是服务器返回的最新数据,这样对时效比较强的场景,ajax请求就会影响我们的结果。XML 被设计用来传输和存储数据。XML 和 HTML 类似,不同的是 HTML 中都是预定义标签,而 XML 中没有预定义标签, 全都是自定义标签,用来表示一些数据。处理办法:发送请求前,看之前有没有同样的请求,有的话,就把前面的请求去掉,发送一个新的请求。在开始的位置点开,输入cmd,点击命令提示符,在窗体里,输入node -v,出现版本信息。原创 2025-02-13 14:37:12 · 838 阅读 · 0 评论 -
js高级对象与继承
套路: 自定义构造函数, 属性在函数中初始化, 方法添加到原型上。* 套路: 先创建空Object对象, 再动态添加属性/方法。* 问题: 对象没有一个具体的类型, 都是Object类型。1. 在子类型构造函数中通用call()调用父类型构造函数。7. 创建子类型的对象: 可以调用父类型的方法。4. 创建父类型的实例对象赋值给子类型的原型。* 适用场景: 需要创建多个类型确定的对象。* 适用场景: 需要创建多个类型确定的对象。1. 子类型的原型为父类型的一个实例对象。原创 2025-02-13 13:38:13 · 405 阅读 · 0 评论 -
js高级原型与原型链、执行上下文与执行上下文栈、作用域与作用域链、闭包以及递归
_proto__属性的作用就是当访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会去它的__proto__属性所指向的那个对象(父对象)里找,一直找,直到__proto__属性的终点null,再往上找就相当于在null上取值,会报错。* 当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 外部函数调用 就产生了闭包。一个函数(子函数)访问另一个函数(父函数)中的变量,外部函数调用,此时就有闭包产生,那么这个变。原创 2025-02-13 10:20:54 · 740 阅读 · 0 评论 -
《(一)js高级01-基础深入》
因为在javaScript中,不同的对象都是使用二进制存储的,如果二进制前三位都是0的话,系统会判断为是Object类型,而null的二进制全是0,自然也就判断为Object。js运行机制,即事件循环机制。在设置元素的时候,会覆盖掉原来的元素中文本和标签,如果新的内容包含标签,不会解析Html标签,也就是说,里面的标签并不是html中的标签,而只是一个文本。在js中,会把任务分为同步和异步,这两者的执行环境不同,同步任务会进入主线程,异步任务会进入事件队列(EventQueue),当主线程代码。原创 2025-02-07 15:00:05 · 982 阅读 · 0 评论 -
JavaScript详解十八 ——BOM
由于历史原因,navigator对象中的大部分属性都已经不能帮助我们识别浏览器了,一般我们只会用userAgent 来判断浏览器的信息,userAgent是一个字符串,这个字符串中包含有用来描述浏览器信息的内容,不同的浏览器会有不同的userAgent。定义在全局作用域中的变量,函数都会变成window对象的属性和方法,在调用的时候,可以省略window,前面学习的对话框都属于window对象方法,如alert(),prompt()等。比如:我们要烧水煮饭,等水开了(10分钟后),再去切菜,炒菜。原创 2025-02-06 10:20:30 · 1231 阅读 · 0 评论 -
JavaScript详解十七 ——JSON、本地存储
将JSON字符串转换为JS中的对象,在JS中,为我们提供了一个工具类,就叫JSON ,这个对象可以帮助我们将一个JSON转换为JS对象,也可以将一个JS对象转换为JSON。是本地存储,存储在客户端,以键/值对的形式存储的,通常以字符串存储。//{"name":"猪八戒","age":28,"gender":"男"}var json = '{"name":"孙悟空","age":18,"gender":"男"}';如果数组很长,我们的代码中就要添加大量的没有实际意义的开始和结束标签,这对于网络传输是不利的。原创 2025-01-22 00:00:00 · 928 阅读 · 0 评论 -
JavaScript详解十八 ——综合题目
拖拽过程,鼠标移动过程中,获得最新的值赋值给模态框的left和top值,这样模态框就可以跟着鼠标走了。节流阀目的,当上一个函数动画内容执行完毕,再去执行下一个函数动画,让事件无法连续触发。鼠标移动,就让模态框的坐标设置为:鼠标坐标减去盒子坐标即可,注意移动时间写到按下。鼠标经过小图片盒子,灰色的遮罩层和大图片盒子显示,离开隐藏2个盒子功能。点击关闭按钮,可以关闭模态框,并且同时关闭半透明遮挡层。点击弹出层,会弹出模态框,并且显示灰色半透明的遮挡层。鼠标的坐标减去鼠标内的坐标,才是模态框真正的位置。原创 2025-01-21 12:31:32 · 316 阅读 · 0 评论 -
JavaScript详解十六 ——动画函数封装
点击按钮,执行动画函数 500</button><br /><button id="btn02">点击按钮,执行动画函数 800</button><br />-- 封装函数,传入不同的对象,目标停止值,都可以调用动画 --><button>点击按钮,执行动画函数</button><br /><button>点击按钮,执行动画函数原创 2025-01-21 12:10:54 · 436 阅读 · 0 评论 -
JavaScript详解十五 ——元素的三大系列offset、client、scroll
使用client系列的相关属性来获取元素可视区的相关信息,可以动态的得到该元素的边框大小,元素大小等。//1、返回自身实际的宽度(实际内容的宽度),不含边框,返回数值不带单位。//2、返回自身实际的高度(实际内容的宽度),不含边框,返回数值不带单位。//1、获取该元素带有定位的父级元素,如果父级没有定位,则返回body。//3、返回自身的宽度,包括padding,内容区,不含边框。//3、返回自身的高度,包括padding,内容区,不含边框。原创 2025-01-21 00:00:00 · 937 阅读 · 0 评论 -
JavaScript详解十四 ——事件高级、事件对象
<ahref="#"class="link">链接一</a></li><li><ahref="#"class="link">链接二</a></li><li><ahref="#"class="link">链接三</a>原创 2025-01-20 15:01:49 · 473 阅读 · 0 评论 -
JavaScript详解十三 ——节点操作
(这个比较容易理解,就是插入到最后一个节点后,例如我插入5个节点,顺序是1、2、3、4、5,那就正常的1、2、3、4、5就好啦,但是注意是在已有节点的后面哦)。(也就是总是会插入到最前面,例如我插入5个节点,顺序是1、2、3、4、5,那么我就需要以5、4、3、2、1的顺序插入,有一种栈结构先进后出的感觉)。这些元素原先不存在,是根据需求动态生成的,所以也成为动态创建元素节点,会将创建好的对象作为返回值返回。获取或设置元素的文本----以纯文本的方式直接显示,不可以解析html标签。确定节点和内容的关系。原创 2025-01-20 11:52:48 · 687 阅读 · 0 评论 -
JavaScript详解十二 ——事件概述、操作元素
读:innerText,innerHTML可以获取元素内面的内容,innerText去除空格、换行和标签,innerHTML可以获取到元素里面的标签,同时保留空格和换行。JS的DOM操作可以改变网页内容、结构和样式,我们可以利用DOM操作元素来改变元素里面的内容、属性等。(2)、JS修改style样式操作,产生的是行内样式,css权重比较高。网页中每个元素都可以产生某些可以触发JS的事件,例如点击事件。(1)、如果样式修改较多,可以采取操作类名的方式更改元素样式。的属性,例如id,href,src等)原创 2025-01-20 11:39:16 · 775 阅读 · 0 评论 -
JavaScript详解十一 ——DOM简介、获取元素
补充1:innerHTML可读写,一方面可获取到元素内部的html代码,另一方面可以操作更改元素内容,包括标签,保留空格和换行,比较常用。上午时间打开页面,显示上午好,显示上午的图片;补充2:innerText可读写,它和innerHTMl类似,不同的是更改元素内容的时候,它会自动将html标签,空格和换行去除。获取元素下的一组节点*/对象,所有查询到的元素都会封装到对象中,即使查询到的元素只有一个,也会封装到伪数组中返回;,在代码执行时,页面还没有加载,页面没有加载DOM对象也没有加载,会导致。原创 2025-01-20 11:28:27 · 1236 阅读 · 0 评论 -
JavaScript详解十 ——数据类型、正则
引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型,通过new关键字创建的对象(系统对象、自定义对象),如Obect、Array、Date等。比较两个引用数据类型时,它是比较对象的内存地址,如果两个对象时一模一样的,但是地址不同,他也会返回false。(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响。中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而。存在的,修改一个变量不会影响其他的变量。原创 2025-01-19 16:52:43 · 740 阅读 · 0 评论 -
JavaScript详解九 ——Math、Date、Array
注意:方法和属性只能添加给对象,不能添加给基本数据类型,当我们对一些基本数据类型的值去调用属性和方法时,浏览器会临时使用包装类将其转换为对象,然后再调用对象的属性跟方法调用完以后,再将其转换为基本数据类型。return"剩余时间:"+d+"天"+h+"时"+m+"分"+s+"秒";//console.log("执行了"+(end-start));//当前时间的毫秒数。原创 2025-01-19 16:46:32 · 906 阅读 · 0 评论 -
JavaScript详解八 ——数组
内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供一些常用的或是最基本而必要的功能(属性和方法),程序员不用管具体怎么实现,直接使用就可以了。进行排序,即使对纯数字的数组,使用sort()排序,也会按照Unicode编码进行排序,所以对数字排序时,可能会得到错误的结果,可以。数组也是一个对象,它和我们普通对象功能类似,也是用来存储一些值的,不同的是普通对象是使用字符串作为属性名的,而数组是使。vararr=["孙悟空","猪八戒","沙和尚","唐僧","沙和尚"];原创 2025-01-19 16:39:32 · 796 阅读 · 0 评论 -
JavaScript详解七 ——作用域、预解析
当在函数作用域中操作一个变量时,它会先在自身作用域中寻找,如果有,就直接使用,如果没有,就去它上一级作用域去寻找,如果全局作用域中依然没找到,则会报错根据在内部函数可以访问外部函数变量的这种机制,用。//加window.,如果没有找到变量c,会undefined,不加的话,会报错。(1)、JS代码是由浏览器中的JS解析器来执行的,JS解析器在运行JS代码的时候分为两步:先预解析再代码执行。在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量。原创 2025-01-18 17:18:30 · 579 阅读 · 0 评论 -
JavaScript详解六 ——函数
console.log("我是"+o.name+",今年"+o.age+"岁了,"+"我是一个"+o.gender+"人"+",我住在"+o.address);//使用return可以结束整个函数。——可以是一个对象,当我们的参数过多时,可以将参数封装到一个对象中,然后通过对象传递。,多个值,返回的是最后一个值。调用函数时,解析器不会检查实参的类型,所以要注意,是否有可能会接收到非法的参数,//需求:输入一个数,求1-这个数的和,在这个基础上进行+1,-1,*1,/1。原创 2025-01-14 20:46:40 · 750 阅读 · 0 评论 -
JavaScript详解五 ——对象
在JavaScript中,创建对象有多种方法,每种方法都有其特点和适用场景,以下是几种常见的对象创建方法:1. **利用`new Object`创建对象**- 使用`new`关键字调用`Object`函数来创建对象。- 可以通过`对象.属性名 = 属性值`的方式向对象添加属性,通过`对象.属性名 = 新值`修改属性,使用`delete 对象.属性名`删除属性。- 对象的属性名不强制遵守标识符规范,但建议遵循。原创 2025-01-14 20:19:58 · 644 阅读 · 0 评论 -
JavaScript详解四 ——流程控制
当该语句执行时,会先对if后的条件进行判断,如果该值为true,则执行if后的语句,如果该值为false,则执行else后的语句,两者选其一执行。顺序结构是程序中最简单的、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的.号了,js中的代码块,只具有分组的作用,没有其他的用途,代码块内容的内容,在外部是完全可见的。由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果。age3>=18?原创 2025-01-13 21:00:11 · 815 阅读 · 0 评论 -
JavaScript详解三 ——运算符大全
运算符也叫操作符,通过运算符可以对一个值或者多个值进行运算,并获取运算结果,常用于实现赋值、比较、执行算数运算符等功能的符号。比如typeof 就是一个运算符,可以获得一个值的类型,它会将该值的类型以字符串的形式返回,typeof的返回值,用来描述类型的number string boolean undefined object1、算数运算符(1)、注意:1:当对非Number类型进行运算时,会将这些值转换为Number,然后再运算 ,- *,/ %任何值和NaN做运算,都是NaN。原创 2025-01-11 15:15:50 · 585 阅读 · 0 评论 -
JavaScript详解二 ——数据类型与转换
当声明了一个变量,但是并不给变量赋值时,它的值就是undefined使用typeof检查一个undefined时也会返回undefined。原创 2025-01-11 15:13:44 · 743 阅读 · 0 评论 -
JavaScript详解一 ——简介与变量
字面量是在源代码中一个固定值的表示法,通俗来说,字面量一些不可更改的,比如:1 2 3 4 .....,字面量都是可以直接使用的,但是我们一般都不会直接使用字面量。(var、for、if、array等)和数据类型(数字、字符串、布尔、函数、对象(obj、[]、{}、null)、未定义)。,而且变量的值可以任意改变,变量更加方便我们使用,所以开发中,都是通过变量去保存一个字面量,并且可以通过变量对字面量进行描述。-- 可以将js代码写在超链接的href属性中,这样当点击超链接时,会执行js代码 -->原创 2025-01-11 15:10:04 · 915 阅读 · 0 评论