JS高级
¡Venceremo
这个作者很懒,什么都没留下…
展开
-
JS高级:Web Workers高级(多线程)
但是由于子线程完全受主线程控制,且不得操作DOM.所以这个新标准并没有改变JS单线程的本质。Worker.prototype.onmessage:用于接收另一个线程的回调函数。Worker.prototype.postMessage:用于向另一个线程发送消息。分线程 //这里的全局对象不是window,alert是window的方法。1、H5规范提供了js分线程的实现,取名为Web Workers。Worker:构造函数,加载分线程执行的js文件。Worker内代码不能操作DOM(更新UI)原创 2022-11-09 09:06:30 · 465 阅读 · 0 评论 -
JS高级:事件循环模型
初始化执行代码(同步代码):包含绑定Dom事件监听吗,设置定时器,发送ajax请求的代码。只有当初始化代码执行完后(可能需要一定时间),才会遍历读取回调队列中的回调函数执行。当事件发生时,管理模块会将回调函数及其数据添加到回调队列中。事件轮询:从任务队列中循环取出回调函数放入执行栈中处理(一个接一个)执行初始化代码,将事件回调函数交给对应模型管理。回调执行的代码(异步代码):处理回调逻辑。初始化代码====》回调代码。回调队列包含(任务队列 消息队列 事件队列)分线程将回调函数放入回调队列 然后执行。原创 2022-11-08 09:34:07 · 181 阅读 · 0 评论 -
JS高级:js是单线程的原因
这决定了它只能是单线程,否则会带来很复杂的同步问题。希望对一个对象只有一个操作 不然一个对象实现多个操作会很复杂 有事件上的问题。作为浏览器脚本语言,javascript的主要用途是与用户互动,以及操作DOM。setTimeout()的回调函数是在主线程执行的。javascript的单线程,与它的用途有关。alert暂停主线程的执行,会暂停计时。先执行初始化代码:包含一些特别的代码。回调代码(回调函数)运行栈中的代码全部执行完后才有。4、js引擎执行代码的基本流程。后面在某个时刻才会执行回调函数。原创 2022-11-08 09:25:40 · 141 阅读 · 0 评论 -
JS高级:定时器的问题
一般会延迟一点(可以接受),也有可能延迟很长时间(不能接受)定时器不可以保证真正是定时执行。2、定时器回调函数是在哪个线程执行的。1、定时器真的是定时执行的吗。3、定时器是如何实现的。原创 2022-11-08 09:26:12 · 162 阅读 · 0 评论 -
JS高级:浏览器内核
布局和渲染模块:负责页面的布局和效果的绘制(内存中的对象)DOM/CSS模块:负责dom/css在内存中的相关处理。html,css文档解析模块:负责页面文本的解析。js引擎模块:负责js程序的编译与运行。事件响应模块:负责定时器的管理。网络请求模块:负责ajax请求。定时器模块:负责定时器的管理。事件响应模块:负责事件的管理。支撑浏览器运行的最核心的程序。不同的浏览器可能不一样。原创 2022-11-08 09:09:14 · 306 阅读 · 0 评论 -
JS高级:进程与线程
进程(process):程序一次执行,就占有一片独立的内存空间。一个进程有多个线程,是多线程的程序。一个进程有单个线程,是单线程的程序。一个进程中也可以同时运行多个线程,可以说程序是多线程运行的。线程池:保存多个线程对象的容器,实现线程对象的反复利用。是CPU的最小的调度单元。一个进程内的数据可以供其中多个线程直接共享。应用程序必须运行在某个进程的某个线程上。有的程序是多进程的,有的程序时单进程的。一个进程中至少有一个运行的线程:主线程。浏览器有多进程和单进程的。是进程内的独立执行单元。原创 2022-11-08 09:08:00 · 545 阅读 · 0 评论 -
JS高级:闭包的作用
直接访问函数内部的局部变量——不能,可以通过闭包让外部操作它。变量是否还存在——一般不存在,存在于闭包中的变量才可能存在。1、使用函数内部的变量在函数执行完后,仍然。1、函数执行完后,函数内。2、让函数外部可以操作(读写)到。(延长了局部变量的生命周期)函数内部的数据(变量/函数)原创 2022-11-07 16:27:20 · 54 阅读 · 0 评论 -
JS高级:闭包-循环遍历加监听
点击击按钮出现每个按钮显示的数字 ——将按钮对应的下标保存在属性中。原创 2022-11-07 16:25:46 · 186 阅读 · 0 评论 -
JS高级:组合继承
在子类型的构造函数中通用call()调用父类型构造函数。在子类型的构造函数中调用父类型构造。定义父类型的构造函数。定义子类型的构造函数。原创 2022-11-08 09:07:19 · 60 阅读 · 0 评论 -
Js高级:原型链的继承
创建父类型的对象(实例)赋值给子类型的原型。将子类型原型的构造属性设置为子类型。子类型的原型为父类型的一个实例对象。定义给父类型构造函数。定义子类型的构造函数。原创 2022-11-08 09:07:28 · 66 阅读 · 0 评论 -
JS高级:对象创建模式
问题:对象没有具体类型。方法:自定义构造函数,属性再函数中初始化,方法在原型上。方法:先创建空Object对象,再动态添加属性/方法。方法:使用{}创建对象,同时指定属性/方法。方法:自定义构造函数u,通过new创建对象。适用场景:需要创建多个类型确定的对象。适用场景:需要创建多个类型确定的对象。适用场景:起始时不确定对象内部数据。问题:如果创建多个对象,有重复代码。适用场景:起始时对象内部数据确定。适用场景:需要创建多个对象。每个对象都有相同的数据(方法,放在原型上)5、构造函数加原型的组合模式。原创 2022-11-08 09:07:07 · 137 阅读 · 0 评论 -
JS高级:闭包的联系题目
相当于直接执行函数,则函数对象是window。这里的that是obj2。闭包输出的是什么;注意闭包产生的条件原创 2022-11-08 09:06:55 · 81 阅读 · 0 评论 -
JS高级:闭包的缺点即解决
意外的全局变量 a=3 等价于window.a。1、缺点:函数执行完后,函数内的局部变量没有释放,占用内存时间会变长。及时释放——让内部函数成为垃圾对象 回收闭包。内存泄露积累多了就容易导致内存溢出。超过了剩余的内存时,就抛出内存溢出的错误。闭包的优点:延长了局部变量的生命周期。没有及时清理的计时器或回调函数。内存溢出:一种程序运行的错误。原创 2022-11-08 09:06:38 · 577 阅读 · 0 评论 -
JS高级:闭包的生命周期
2、死亡:在嵌套内部函数成为垃圾对象时。包含闭包的对象成为垃圾对象。完时就产生了(不是在调用)1、产生:在嵌套内部函数。定义执行(上下文的时候)原创 2022-11-07 16:27:35 · 205 阅读 · 0 评论 -
JS高级:常见的闭包
2、将函数作为实参传递给另一个函数调用。1、将函数作为另一个函数的返回值。原创 2022-11-07 16:26:46 · 60 阅读 · 0 评论 -
JS高级:理解闭包
内部函数引用了外部函数数据(变量/函数)理解2:闭包内部函数--包含被。闭包存在于嵌套的内部函数中。使用chrome调试查看。引用了嵌套的外部(父)函数。(函数)时,就产生了闭包。原创 2022-11-07 16:25:31 · 56 阅读 · 0 评论 -
JS高级:作用域的题目
使用this说明里面的在当前对象里面找。原创 2022-11-07 16:25:10 · 52 阅读 · 0 评论 -
JS高级:作用域与作用域链
作用域是静态的,只要函数定义好了就一直存在,且不会变化。是静态的(相对于上下文对象),也就是编写代码时就确定了。函数执行上下文是在调用函数时,函数体代码执行之前创建。作用域链:嵌套的函数使用 构成由内向外的作用域--从内向外找变量。没有块作用域(ES6有块作用域,用{}包含的)隔离变量,不同的作用域下同名变量不会有冲突。执行上下文环境是动态的,执行上下文环境(对象)是属于所在的作用域。函数上下文环境==>对应函数的使用域。全局上下文环境==>全局作用域。全局作用域之外,每个。2、作用域与执行上下文。原创 2022-11-07 16:24:49 · 149 阅读 · 0 评论 -
JS高级:上下文的题
1、说明变量先提升 ,之后再执行变量提升 ,所以之后的a是function。递归调用 函数内部调用 执行自己 --具有终止条件。2、整个过程中产生了几个执行上下文 :5个。3、说明,变量赋值之后 函数声明被弹出。原创 2022-11-07 16:24:27 · 100 阅读 · 0 评论 -
Js高级:执行上下文栈
创建后,将其添加到栈中(压栈),函数执行的产生上下文。5、将所有的代码执行完后,栈中只剩下window。1、在全局代码执行前,JS引擎就会。来存储管理所有的执行上下文对象。函数执行完后,将栈顶的对象移除。window)确定后,原创 2022-11-07 16:24:07 · 68 阅读 · 0 评论 -
JS高级:执行上下文
var定义的全局变量====》值:undefined,添加为window的属性。function声明的全局函数===>赋值(fun),添加为window的方法。arguments==》赋值(所有的实参列表),添加为执行上下文的属性。function声明的函数==》赋值(fun),添加为执行上下文的方法。var定义的局部变量==》undefined,添加为执行上下文的属性。形参变量==》赋值(实参)==》添加为执行上下文的属性。开始执行函数体的代码(在函数执行上下文中去寻找)创建对象的函数执行上下文对象。原创 2022-11-03 20:59:31 · 223 阅读 · 0 评论 -
JS高级:变量提升与函数提升
通过var定义(声明)的变量,在定义语句之前就可以访问到。通过function声明的函数,在之前就可以调用、值:undefined。值:函数定义(对象)原创 2022-11-03 20:14:23 · 56 阅读 · 0 评论 -
Js中原型链的问题
【代码】Js中原型链的问题。原创 2022-11-03 19:36:05 · 51 阅读 · 0 评论 -
JS高级:instanceof的使用
如果B函数的显示原型对象在A对象的原型链上,返回Ture,否则返回False。表达式:A instanceof B。2、Function是通过new自己产生的实例。1、instanceof 是如何判断的。原创 2022-11-03 13:37:35 · 205 阅读 · 0 评论 -
JS高级:原型链的属性问题
1、读取对象属性值时,会自动在原型链中查找2、设置对象属性时,不会查找原型链,如果当前对象没有此属性,直接添加此属性并设置其值3、方法一般定义在原型中,属性一般通过构造函数定义在对象本身身上原创 2022-11-03 12:38:09 · 339 阅读 · 0 评论 -
JS高级:原型链
如果最终没找到,返回undefined。所有函数的隐式原型都相等:__proto__先在自身属性上查找,找到返回。作用:查找对象的属性(方法)2、构造函数/原型/实体对象的关系(图解)3、构造函数/原型/实体对象的关系2(图解)访问一个对象的属性时。)这条链向上查找,找到返回。原创 2022-11-03 10:35:24 · 132 阅读 · 0 评论 -
JS高级:显示原型和隐式原型
给原型对象添加的方法,隐式原型可以访问。默认值为构造函数的prototype属性值。数时自动添加的,默认时一个空的Object对象。,即显示原型(属性)-保存的是地址值。在ES6之前,我们只能操作显示原型。为其对应构造函数的显示原型的值。,可称为隐式原型(属性)原创 2022-11-03 09:39:10 · 355 阅读 · 0 评论 -
js高级:原型prototype属性
1、函数的prototype属性。自动拥有原型中的属性(方法)原型上的方法给实例用的。属性,它默认指向一个。:函数的所有实例对象。原创 2022-11-03 09:08:25 · 118 阅读 · 0 评论 -
JS高级:函数中的this
任何函数本质上都是通过对象来调用的,(被动指定的有window),this是函数内部拥有的变量,它的值是调用函数的当前对象,new test():新创建的对象。2、如何确定this中的值。原创 2022-11-03 09:07:20 · 123 阅读 · 0 评论 -
js高级:IIFE 立即执行函数表达式
不会污染外部匿名空间,全局命名空间。函数看成整体后才会执行 匿名函数自调用。原创 2022-11-03 09:06:55 · 66 阅读 · 0 评论 -
js高级:回调函数
你定义的,但是你没有调用它,最终她执行了。ajax请求回调函数。1、什么函数才是回调函数。原创 2022-11-02 20:25:30 · 105 阅读 · 0 评论 -
js高级:函数
test.call()/test.apply(obj):类似obj.test(),临时让obj调用test方法。只有函数是可以执行的,其他类型的不可以。obj.test():通过对象调用。obj.test():new调用。实现特定功能的n条语句的封装体。test():直接调用。可以让任意一个函数成为对象的方法。4、如何调用(执行)函数。原创 2022-11-02 20:07:51 · 162 阅读 · 0 评论 -
js高级:对象的问题
多个数据的封装图,保存多个数据的容器,代表显示世界中的一个十五。中括号:给对象添加的属性名——特殊字符 空格 变量名称不确定(含义变量)属性:属性名(本质是字符串)和属性值(任意 组成)属性名 、中括号[属性名字符串]方法:一种特别的属性。4、如何访问对象的内部数据。原创 2022-11-02 19:48:24 · 53 阅读 · 0 评论 -
js的变量赋值的问题
将obj的内容保存到obj2,只是内容是地址值,通过一个变量修改对象内部数据,另一个变量看到的是修改之后的数据。2、引用变量赋值问题,n个引用变量指向同一个对象,保存的内容都是对象内存的地址值。xxx是对象,a中保存的是对象的地址值 xxx={} function。xxx是一个变量,保存的是(基本数据,也有可能是对象数据-地址值)3、在js调用函数时传递变量参数时,是值传递还是引用传递。释放内存:小内存空间。xxx是基本数据,a中保存的是这个具体数据。这里传递的是内容——》值 值传递。原创 2022-11-02 16:58:57 · 279 阅读 · 0 评论 -
js高级:数据、内存、变量的定义与关系
内存的产生和死亡:内存条(电路板)上电之后产生内存空间,内存空间存储数据,处理数据,断电之后,内存空间和数据都消失。1、什么是数据:存储在内存中代表特定信息的东西,本质0110。2、什么是内存:内存条通电后产生可存储数据的空间(临时的)数据的特点:可以传递、可以运算。每个变量都对应一块小内存,内存:用来存储数据的空间。栈:全局变量/局部变量。4、内存、数据、变量三者之间的关系。:内部存储的数据,地址值数据。就是内存中保存的数值数据。用来查找对应的内存空间,原创 2022-11-02 15:49:09 · 278 阅读 · 0 评论 -
js高级:undefined与null+类型分类
如果最后赋值为null,表示将对象指向为空,成为垃圾对象,被浏览器(垃圾回收器)回收。变量的类型:基本类型(保存的是基本数据类型的数据)和引用类型(保存的是地址值)undefined:代表定义了但是未赋值,null:代表定义并赋值null。null的typeof 为Object,如果对一个变量,之。1、undefined与null的区别。2、什么时候给变量赋值为null。3、严格区分变量类型与数据类型。数据的类型:基本类型和对象类型。后需要进行赋值为对象,原创 2022-11-02 13:20:13 · 59 阅读 · 0 评论 -
js高级.1:数据类型的分类+判断
instanceof:判断对象的具体类型 是函数 还是数组,结果布尔值 实例。* Function:一种特别的对象(数值下标,内部数据是有序的)* Array:一种特别的对象(数值下标,内部数据是有序的)* typeof:返回的是数据类型的字符串。object与null不可以, objetc与array不可以。*Srting:任意字符串。* Number:任意数字。* Object:任意对象。,其余基本类型都可以,function可以。--只有一个值可以判断,其他不可以。*基本数据类型 :值。原创 2022-11-02 13:08:12 · 61 阅读 · 0 评论