ECMAScript
文章平均质量分 79
ECMAScript
小管打天下
这个作者很懒,什么都没留下…
展开
-
【ECMAScript】this 总结
2.1.2 全局作用域下声明的变量是挂载到 window 上的2.2 this 在浏览器、node 环境下的表现2.2.1 获取全局对象的方法web: window, self, frames, thisnode: globalweb worker: self通用方式: globalThis(可以在任何上拿到全局作用域)⭐2.2.3 node 环境下在 node 环境下,需要把属性定义到 global 上,否则直接 var 声明,global 拿不到2.2.4 严格模式下,谁调用函数,函数内部原创 2022-06-01 07:35:04 · 192 阅读 · 1 评论 -
【ECMAScript】总结:闭包与回调
铺垫闭包 + 回调 -> JS 高阶函数 High-order function闭包、回调也是高阶函数高阶函数要比普通函数处理更多的问题,更高的集成性和封装性集成性:把所有的功能装到一个程序里面,进行相互的作用封装性:将一个程序所需要的代码封装到函数内部理论上,test 就是一个闭包,原因是 闭包在ECMA262 上的定义:当一个函数被系统创建时,闭包就会被一同创建出来一个函数被定义的时候,一定有一个外界作用域,global scope -> 闭包一个函数同时与外界环境(作用域)捆绑在一起的这种现象叫做闭包原创 2022-06-01 07:11:12 · 171 阅读 · 0 评论 -
【ECMAScript】变量生命周期、垃圾回收原理
在执行环境的时候,负责管理代码执行过程中使用的内存的js中不需要手动的进行垃圾回收,JS引擎会自动的进行垃圾回收,回收的是有关于值方面的内存是对内存中存储的值进行处理变量的生命周期:说明不再使用的变量是如何不再使用的存在生命周期的变量,-> 局部变量 -> 只在函数执行过程中存在全局变量 -> 直到浏览器关闭结束闭包解除引用 ⭐1.2 垃圾回收机制策略1.2.1 标记清除:mark and sweep排除全局变量排除闭包形成的AO中的变量排除之后还存在的变量就被视为需要清除的变量,销毁带离开环原创 2022-06-01 06:58:13 · 109 阅读 · 0 评论 -
【ECMAScript】错误信息、try catch、严格模式
1.1.2 关键字赋值:关键字不允许赋值1.1.3 基本的语法错误1.2 ReferenceError 引用错误1.2.1 变量或者函数未被声明1.2.2 给无法被赋值的对象赋值的时候1.3 RangeError 范围错误1.3.1 数组长度赋值为负数1.3.2 对象方法参数超出可行范围1.4 TypeError 类型错误1.4.1 调用不存在的方法1.4.2 实例化原始值1.5 URIError URI错误URI: Uniform Resource Identifi原创 2021-05-06 23:44:55 · 645 阅读 · 0 评论 -
【ECMAScript】自定义原型方法、去重、封装typeof
2. 找出第一个不重复的值3. 闭包4. 数据类型5. 优化下面的程序优化变形:将上面优化后的结果改为不准用day-1,直接用使用day,应该如何修改原创 2021-05-06 23:20:15 · 127 阅读 · 0 评论 -
【ECMAScript】 数组方法、类数组
两个数组合并,将一个数组接到另一个数组后面,返回连接之后的数组1.2 toString将数组元素转为字符串,以逗号隔开1.3 sliceslice 新建了一个数组,将原来的值克隆了一份slice(start,end ) -> [start, end) 从start开始,到end结束之前1.4 join、splitjoin:没有填参数,默认以逗号隔开填了参数,则元素之间以填的参数隔开splitsplit:把元素变为数组第一个参数为分割符,按照分割符将字符串变为数组第二个参数代表长度,截取原创 2021-05-06 11:21:54 · 216 阅读 · 0 评论 -
【ECMAScript】深拷贝实例、数组基础、数组方法、数组排序
3种方式1.2 数组到底是什么在JavaScript中,数组就是对象的另一种形式,他们的访问机制是一样的,都是通过[]的方式index相当于键名,数组中存放的是键值如果数组最后加了逗号,没有任何作用 ⭐2. 方法问:push unshif 这些方法是哪来的⭐答:继承了数组Array构造函数的prototype属性上的方法,即继承了数组原型上的方法push unshif -> 返回值是执行了方法以后的数组长度push 在数组的最后一位添加元素实现push方法 ⭐unshift 在最前面加原创 2021-05-05 23:14:18 · 223 阅读 · 0 评论 -
【ECMAScript】三目运算、对象克隆、浅拷贝、深拷贝
简写运算结果赋值加括号运算面试题字符串比较大小,比较的是ASCII码,第一位比完再比第二位2. 对象 拷贝/复制/克隆 clone2.1 浅拷贝并没有把对象里的引用值给处理了,只处理了第一层的属性,并没有处理下面的引用值封装成 function2.2 深拷贝拷贝之后的值怎么修改都与之前的值无关方法1方法23. 笔试题打印内容?打印的内容?打印的内容?⭐打印结果是什么?打印结果是什么?4. 作业打印结果,并分析其原因请用原创 2021-05-05 18:18:52 · 232 阅读 · 0 评论 -
【ECMAScript】对象属性遍历、this、caller_callee
每个函数return this2. 对象2.1 通过[]访问属性名[] 里面放字符串最早的 JS 引擎 都是通过 obj[‘name’] 访问的,后来有了 . 语法,实际上访问 obj.name ,内部隐式的转换为 obj[‘name’](chrome v8 引擎不一定是这么做的)枚举:一组有共同特性的集合JavaScript 的枚举实际上就是对象,有枚举就有遍历,是相辅相成的。枚举 -> 遍历:在一组信息,按顺序一个一个的去获取其信息的过程for-in 既可以遍历对象,也可以遍历数组2.2.2原创 2021-05-05 16:17:13 · 235 阅读 · 0 评论 -
【ECMAScript】继承深入、call_apply、圣杯模式、模块化
一个构造函数的原型属性,是这个构造函数所有实例化出来的对象的公共祖先,所有构造函数构造出来的对象,都继承于它的原型2. 原型 -> 继承 ⭐原型链继承 -> 存在引用值共享的问题借用构造函数 -> 父类原型方法无法获取(覆盖了)组合继承(伪经典继承) -> 上面两个同时使用,会出现构造函数执行两次的情况寄生组合继承(经典继承): YUI圣杯模式es6 class 继承拷贝继承 -> 不常用,知道有就行问:原型链继承存在的问题:引用值共享的问题,如何解决?为什么?⭐答:借用构造函数解决,-> 会出原创 2021-05-04 00:24:10 · 264 阅读 · 0 评论 -
【ECMAScript】原型与原型链深入、对象继承
是指向对象本身的原型 是实例化对象的祖先,实例化对象的 保存的原型就是 所有的对象都有自己的原型,包括原型本身也有自己的原型原型继承 -> 用原型链的方式实现沿着 去找原型里的属性,一层一层的去继承原型的属性的这条链条叫做原型链原型链的顶端是 Object.prototype ⭐Object.prototype属性中保存了一个 toString方法 ⭐原型链上的增删改,只能操作对象本身的,不能操作修改祖先的(不是绝对的)引用值可以修改2.3 祖先原型上的原始值不能修改祖先原型上的原始值不能修改,原创 2021-05-03 17:36:44 · 268 阅读 · 0 评论 -
【ECMAScript】原型、原型链、闭包立即执行函数、插件开发
访问原型的两种方式原型prototype其实是 对象的一个属性,但它也是对象所有的函数是通过 构造出来的 ⭐这个 prototype 是定义构造函数构造出的每个对象的公共祖先,所有被该构造函数构造出的对象都可以继承原型上的属性和方法javascript中一切皆为对象’ ’ 和 " " 有什么区别?1.2 原型的作用在实例化的时候,总有些写死的值,每次 new 的时候,都要走一遍流程,属于代码的冗余。需要写死的值就写到原型上,直接继承就可以1.3 构造出来的对象 对 原型的增删改查问题通过实例化原创 2021-05-03 01:20:47 · 331 阅读 · 0 评论 -
【ECMAScript】构造函数原理、实例化原理、包装类
new 做了什么:把 this 造出来,改变 this 指向,指向实例化对象不用构造函数实现同一件事和普通函数没区别,new的时候只是系统帮忙把this指向实例化的对象当构造函数返回的是引用值时,如:函数、对象、数组,就返回引用值返回的是原始值,没有任何作用2. 包装类原始值并没有自己的方法和属性,所以没有a.属性问:数字是不是一定是原始值?答:不一定,还可以通过 new Number() 将其变为对象new Number, new String, new Boolean包装类案例⭐问:原原创 2021-05-02 19:31:19 · 326 阅读 · 0 评论 -
【ECMAScript】对象、构造函数、实例化
对象里的函数叫方法methods外部的函数就叫函数funciton声明了一个对象,赋值给了一个变量例子:出勤知识点:splice , indexOf , 方法内部可以传参删除数组中的某一项1.1.2 构造函数系统自带的构造函数对象和构造函数是两码事,对象是通过实例化构造函数而构造的对象实例自定义构造函数 ⭐大驼峰命名:与普通函数区分的表面区别this 指向的是对象本身只有实例化或new了构造函数之后,才能构造出一个对象的实例⭐传参2. 作业写一个构造函数,接收数字类型的参数,原创 2021-05-02 18:15:47 · 269 阅读 · 0 评论 -
【ECMAScript 】立即执行函数、闭包深入、逗号运算符、表达式
全局的函数都保存在GO中,不释放,想调用的时候可以随时调用立即执行函数 的功能性称呼:初始化函数写法一函数括起来之后再加(),也就是函数的执行一定是表达式才能被执行符号()执行写法二括号里面写函数声明,这个函数经过括号的包裹也就变成了表达式括号包任何东西都叫表达式,它也能转换成表达式把函数声明变成表达式之后,函数名就被自动忽略了问题:下方代码是否能执行需求:以下函数立即执行,并拿到值,执行完立即释放1.3 将函数声明变成表达式的方法1.4 面试题1.4.1 下面代码会报错吗不原创 2021-05-02 16:03:37 · 348 阅读 · 0 评论 -
【ECMAScript】作用域、作用域链、预编译、闭包基础
函数也是一种对象类型,也是一种 引用类型 ,也是一种引用值既然是对象,它就一定有相应的属性值对象 -> 有些属性时我们无法访问的 -> JS引擎内部固有的隐式属性,也叫私有属性1.2 隐式属性 [[scope]]1.2.1 [[scope]]是什么?函数创建时,生成的一个JS内部的隐式属性,只能由JS引擎读取的函数存储作用域链的容器,作用域链中存储的是 AO/GO,即作用域链是存储AO,GO的容器AO,函数的执行期上下文GO,全局的执行期上下文作用域链就是把AO,GO形成的链条从上到下排列起来,这原创 2021-05-02 12:56:56 · 310 阅读 · 0 评论 -
【ECMAScript】参数默认值、递归、预编译、暗示全局变量
参数默认值:undefined设置默认值第一个参数用默认值,第二参数用传入的值2. 递归函数自己调用自己,慎用!有性能问题总是找到出口后,再向上一步一步的赋值计算后返回结果3. 预编译 ⭐3.1. 基础JS运行代码步骤预编译作用函数声明整体提升,变量只有声明提升执行期上下文执行期上下文分为 函数上下文AO 和 全局上下文 GO函数预编译:在函数执行之前要进行的一个步骤,这个步骤叫 AO activation object 活跃对象,函数上下文AO做了什么:打印输出什么?3原创 2021-05-01 17:31:02 · 296 阅读 · 0 评论 -
【ECMAScript】函数基础与种类、形实参及映射、变量类型
数学中的函数,两个变量x,y,任意 x 都有一个确定的 y 与之对应,则 x 是自变量,y 是 x 的函数y = f(x) 函数值就是确定的,有确定性计算机中的函数 -> 函数式编程:一个固定的功能或者是程序段被封装的过程,实现一个固定的功能或者是程序,在这个封装体中需要一个入口和一个出口,入口就是参数,出口就是返回高内聚,低耦合耦合编程的基本原则:高内聚、低耦合 -> 模块的单一责任制目的:让一个代码块有强的功能性,高的独立性高内聚:模块代码内部紧密联系性强低耦合:把重复的代码提取出来原创 2021-05-01 15:14:39 · 342 阅读 · 0 评论 -
【ECMAScript】循环、引用值初识、显示及隐式类型转换
写法1.2. while写法死循环1.3. do while无论条件是否成立,都会先执行一次1.4. 题目1.4.1. 让如下代码只输出1-10,不可以用return/exit(0)/break1.4.2. 从0开始做加法,加到什么时候总和是小于100的1.4.3. 100以内的数,跳过可以被7整除或个位数是7的数整除用 % 个位用 %10写法一写法二1.4.4. 计算 0-9 的和1.4.5. 可以被4,5,6整除的数1.4.6. 打印0-100的数,原创 2021-05-01 02:04:00 · 381 阅读 · 0 评论 -
【ECMAScript】语法、规范、错误、运算符、判断分支、注释
语句结束用 js 引擎是以 分割语句的,如果没有加,会自动给你加上符号的两边都有空格,比如:c = a + b;在JS中错误分为两大类:语法错误,通用错误语法错误 Uncaught SyntaxError,通篇的代码都不会执行2.2. 引用错误引用错误 Uncaught ReferenceError,错误之前的代码会执行,之后的代码不会执行3. 算数运算符运算符包括 括号运算 > 普通运算 > 赋值3.2. + 加法用法3.3. / 除法3.4 % 取模3.3. 交换值原创 2021-04-28 23:41:43 · 1058 阅读 · 0 评论 -
【ECMAScript】发展史、ECMA、编程语言、变量、JS值
主流浏览器的内核1990年蒂姆·博纳斯·李(超文本分享咨询的人),开发了浏览器:world wid web,后来移植到C,后来更名为 libwww/nexus1993年美国伊利诺大学 NCSA 组织,组织中的 马克·安德森 开发了 MOSIC 的浏览器,一款真正意义上的图形化浏览器1994年马克·安德森 和 吉姆·克拉克(硅图SGI公司成员)成立了公司:MOSIAC communications corporation 马赛克交流公司。后来出了一点小插曲:MOSIAC 商标属于 伊利诺大学,在马克.安德森离原创 2021-04-28 14:30:45 · 656 阅读 · 0 评论