随笔分类 -  js

有关js的一些小知识
摘要:ResizeObserver ResizeObserver是监听DOM元素宽高的变化,需要注意的一点就是监听出变化结果是contentBox的宽度和高度 const resizeObserver = new ResizeObserver((entries) => { // dosomething c 阅读全文 »
posted @ 2023-03-03 10:20 有点油 阅读(143) 评论(0) 推荐(0) 编辑
摘要:函数调用的扁平化,即把层级嵌套的那种函数调用(一个函数的运行结果当作实参传给下一个函数的这种操作)扁平化,这就是compose函数。 function a (a) { return a } function b (a) { return a + 'b' } function c (b) { retu 阅读全文 »
posted @ 2021-07-28 14:09 有点油 阅读(237) 评论(0) 推荐(0) 编辑
摘要:柯里化函数 柯里化可以利用函数和不同的参数构成功能更加专一的函数。 柯里化其实就是利用闭包的技术将函数和参数一次次缓存起来,等到参数凑够了就执行函数。 function curry(fn, ...rest) { const length = fn.length return function() { 阅读全文 »
posted @ 2021-07-27 15:34 有点油 阅读(246) 评论(0) 推荐(0) 编辑
摘要:传统方法 HTML 网页中,浏览器通过<script>标签加载 JavaScript 脚本。 <!-- 页面内嵌的脚本 --> <script type="application/javascript"> // module code </script> <!-- 外部脚本 --> <script 阅读全文 »
posted @ 2021-04-26 16:02 有点油 阅读(445) 评论(0) 推荐(0) 编辑
摘要:概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的require、Python 的import,甚至就连 CSS 都有@import,但是 JavaScript 任何这方面的支 阅读全文 »
posted @ 2021-04-26 15:55 有点油 阅读(477) 评论(0) 推荐(1) 编辑
摘要:捕获并处理异常,能避免出现页面白屏的情况。那怎么捕获异常呢? 主动捕获运行时异常 用 try-catch 能捕获同步代码的运行时错误。如果是异步代码,需要转化成 await 的写法。如: try { } catch (e) { // 处理异常 } 全局运行时异常 未被处理的 JavaScript 运 阅读全文 »
posted @ 2021-04-22 10:35 有点油 阅读(513) 评论(0) 推荐(0) 编辑
摘要:节流和防抖 用途 浏览器的一些事件,如:resize,scroll,keydown,keyup,keypress,mousemove等。这些事件触发频率太过频繁,绑定在这些事件上的回调函数会不停的被调用。会加重浏览器的负担,导致用户体验非常糟糕。 原理 节流防抖主要是利用了闭包。 节流 连续触发事件 阅读全文 »
posted @ 2021-04-15 10:27 有点油 阅读(544) 评论(0) 推荐(0) 编辑
摘要:发布订阅模式 发布订阅模式的发布和订阅都由一个调度中心来处理 发布订阅模式是完全解耦的,因为调度中心中存的直接就是逻辑处理函数 要点:都要实现添加/删除/派发更新三个事件。 class Event { // 首先定义一个事件容器,用来装事件数组(因为订阅者可以是多个) #handlers = {} 阅读全文 »
posted @ 2021-04-15 10:13 有点油 阅读(1096) 评论(0) 推荐(0) 编辑
摘要:观察者模式 观察者模式存在耦合,主体中存储的是观察者实例,而 notify 方法遍历时调用了观察者的 update 方法 要点:都要实现添加/删除/派发更新三个事件 class Subject { constructor() { this.observers = [] } add(observer) 阅读全文 »
posted @ 2021-04-15 10:08 有点油 阅读(335) 评论(0) 推荐(0) 编辑
摘要:思路 函数的实现其实都借助了点调用。利用第一个参数做个中转,调用完之后删除。 call Function.prototype.myCall = function(context = windows, ...args) { context._fn = this const result = conte 阅读全文 »
posted @ 2021-04-14 16:31 有点油 阅读(125) 评论(0) 推荐(0) 编辑
摘要:实现 new 过程: 函数第一个参数是构造函数 实例的__proto__指向构造函数的原型属性prototype 函数剩余参数要挂载到一个实例对象上 构造函数有返回值时,就返回这个返回值 const myNew = function () { let obj = {} //开辟内存空间 let Co 阅读全文 »
posted @ 2021-04-14 16:09 有点油 阅读(118) 评论(0) 推荐(0) 编辑
摘要:Symbol: ES6 新增的一个基本类型,一个symbol的值可以通过 Symbol函数来获得 var sym= Symbol() /* Symbol的参数其实没有什么意义,只是给我们一个标示。例如: {Symbol('name'): 'Jack'} 看作 {name: 'Jack'} 便于理解 阅读全文 »
posted @ 2020-09-11 16:53 有点油 阅读(149) 评论(0) 推荐(0) 编辑
摘要:作业域:我们可以简单的理解为 一个函数的方法体内就是一个作业域, 块级作用域: { },内表示块级作用域,比如 for循环的{ } 作用域链:和原型链 差不多,当一个访问一个变量时,会就近查找一个作用域,如果没有会沿着作业域链,一级一级的往上查找, 以上个人理解,如有错误,欢迎指出 var 适用 整 阅读全文 »
posted @ 2020-06-10 15:21 有点油 阅读(151) 评论(0) 推荐(0) 编辑
摘要:本文讲的是一般项目中使用的Object对象,不包括不可枚举属性,Symbol属性 1. for in // for in 依次获取对象的key for(key in obj){ console.log(key) //name age sex } 2. Object.keys // Object.ke 阅读全文 »
posted @ 2020-01-06 10:26 有点油 阅读(3668) 评论(0) 推荐(2) 编辑
摘要:语法 /** * @param callback {function} 第一个参数是一个回掉函数 不可省略 * @param initialValue 初始化值,是给callback函数第一个参数赋值用的 * @return 返回计算结果 */ Array.prototype.reduce(call 阅读全文 »
posted @ 2020-01-03 16:16 有点油 阅读(682) 评论(1) 推荐(2) 编辑
摘要:forEach 遍历数组 不支持跳出,无返回值 /** * forEach 数组遍历 中途不能跳出 和for遍历最大的区别 * 它的参数是一个回掉函数 * 该回掉函数的参数: * item: 数组的每一项 * index: 下标 */ arr.forEach(function fn(item,ind 阅读全文 »
posted @ 2020-01-02 17:16 有点油 阅读(367) 评论(2) 推荐(2) 编辑
摘要:数组遍历有很多,这里先讲下最常用的for 1. 普通的for var arr1 =[1,2,3,4,5,6] // for 循环遍历 中途可以用break跳出 for(var i=0;i<arr1.length;i++){ if(i>2) break; console.log(arr1[i]) } 阅读全文 »
posted @ 2020-01-02 13:21 有点油 阅读(846) 评论(1) 推荐(1) 编辑

点击右上角即可分享
微信分享提示