JS--高级
2021-01-22 14:13
标签:全局变量 函数作用域 基本 cti type属性 包含 fun callback 内存溢出 1,分号 不加分好有问题的情况 a,小括号开头的前一条语句 b,中方括号开头的前一条语句 2,函数高级 **原型与原型链** 函数的prototype属性:默认指向一个空对象(称为原型对象) **显式原型和隐式原型** 显式原型属性:每个函数都有prototype 隐式原型属性:每个对象都有__proto__ **原型链** 沿着隐式原型__proto__这条链去查找对象,直到找到,或者到尽头返回undefined 函数的显式原型指向的对象默认是空object实例对象(但是object不满足) 所有函数都是Function的实例(包括Function他自身) object原型对象是原型链的尽头(因为object的隐式原型对象__proto__的值是null) 注意:查找属性的时候才去看原型链,设置属性时只会给该对象添加属性 **探索 instanof (判断左边的对象是不是右边的实例)** 7月7日 **执行上下文和执行上下文栈** ?? 变量提升与函数提升 通过var定义的变量和function声明的函数,在定义前调用,称为变量和函数的提升,返回值是undefined ?? 执行上下文 全局执行上下文,函数执行上下文 在执行变量,在函数调用前:在栈里面创建对应的执行上下文对象,预处理;最后执行全局代码,函数体代码。 ?? 执行上下文栈 在全局代码执行前,会创建一个栈管理执行上下文对象(后进先出) ***作用域与作用域链*** 全局作用域 函数作用域 块作用域:{} ***循环遍历加监听*** ?? 闭包 ?注意点:别多次计算btns.length ??比如:for(var i = 0,length = btns.length;i
?利用闭包实现循环遍历加监听 ?如何产生闭包:【前提外部函数被执行】,当一个嵌套的内部函数引用了潜逃的外部函数的变量(函数)时,就产生了闭包(闭包:包含被引用变量或者函数的对象) ???闭包作用:使用函数内部变量在函数执行后,仍然存活在内存中(演唱了局部变量的生命周期);并且让函数外部可以操作(读写)到函数内部的数据(变量/函数) ???闭包死亡:在嵌套的内部函数称为垃圾对象时 ?? 闭包应用--自定义JS模块 JS模块:具有特定功能的js文件(将所有数据和功能都封装在一个函数内部) 暴露的方式: 1,return (缺点:需要调用) 2,绑定为window的属性,则可以在外部直接使用 ?? 闭包缺点(内存溢出,内存泄漏) 解决方案:让内部函数称为垃圾对象回收闭包 --> f=null 内存泄漏累计过多就会造成内存溢出 比如:意外的全局变量(a = 3 ) 比如:循环定时器不清理 比如:闭包未 f=null 7月9日 ***对象创建模式*** ??object构造函数模式 ??对象字面量 ??工厂模式(工厂函数:返回一个对象的函数) ??自定义构造函数模式 ??构造函数 + 原型的组合模式 7月11日 ***原型链继承*** 子类型的原型为附类型的一个实例对象 ***组合继承*** ***进程与线程*** 线程是进程内的一个独立的执行单元,是程序执行的一个完整流程,是CPU的最小调度单元 区分:初始化代码,回调代码 JS是单线程 JS引擎执行代码的基本流程 **先执行初始化代码:包含一些特别的代码 回调函数(异步执行) **设置定时器 **绑定事件监听 **发送ajax请求 **后面在某个时刻才会执行回调代码 ***事件循环模型*** 1,JS初始化代码;2,WebAPIs;3,callback queue。 ***H5 Web workers 多线程*** 将一些大计算量的代码,交由web worker运行而不冻结用户界面 在分线程中,window不再是全局变量,(比如document不可用) 不足:不是所有浏览器都支持,速度慢 JS--高级 标签:全局变量 函数作用域 基本 cti type属性 包含 fun callback 内存溢出 原文地址:https://www.cnblogs.com/SmallCap/p/13216553.html