随笔分类 -  javascript

摘要:程序处理的工具 • 引擎 从头到尾负责整个 JavaScript 程序的编译及执行过程。 • 编译器 引擎的好朋友之一,负责语法分析及代码生成等脏活累活。 • 作用域 引擎的另一位好朋友,负责收集并维护由所有声明的标识符(变量)组成的一系列查 询,并实施一套非常严格的规则,确定当前执行的代码对这些标 阅读全文
posted @ 2020-05-17 22:26 姚啊姚 阅读(192) 评论(0) 推荐(0)
摘要:组件的单一职责 原则上讲,组件只应该做一件事情。但是对于应用来说,全部组件都拆散,只有单一职责并没有必要,反而增加了编写的繁琐程度。那什么时候需要拆分组件,保证单一职责呢?如果一个功能集合有可能发生变化,那么就需要最大程度地保证单一职责。 单一职责带来的最大好处就是在修改组件时,能够做到全在掌控下, 阅读全文
posted @ 2020-05-04 20:45 姚啊姚 阅读(209) 评论(0) 推荐(0)
摘要:JSX实现条件渲染 渲染一个列表。但是需要满足:列表为空数组时,显示空文案“Sorry,the list is empty”。同时列表数据可能通过网络获取,存在列表没有初始值为 null 的情况。 最简单的方式:三目运算 const list = ({list}) => { const isNull 阅读全文
posted @ 2020-05-04 16:47 姚啊姚 阅读(240) 评论(0) 推荐(0)
摘要:响应式框架基本原理 响应式或数据双向绑定的框架,直观上,数据在变化时,不再需要开发者去手动更新视图,而视图会根据变化的数据“自动”进行更新。 在这个过程中,我们需要: 收集视图依赖了哪些数据 感知被依赖数据的变化 数据变化时,自动“通知”需要更新的视图部分,并进行更新 这个思考过程换成对应的技术概念 阅读全文
posted @ 2020-05-04 13:44 姚啊姚 阅读(780) 评论(0) 推荐(0)
摘要:数组API——includes Array.prototype.includes(value : any): boolean [1, 2, 3].includes(3) // true 这是判断数组中是否含有一个元素的方法,该方法最终返回一个布尔值。 现成的判断数组中是否含有一个元素的方法: [1, 阅读全文
posted @ 2020-05-02 00:26 姚啊姚 阅读(444) 评论(0) 推荐(0)
摘要:new关键字做了什么 step1:首先创建一个空对象,这个对象将会作为执行 new 构造函数() 之后,返回的对象实例 step2:将上面创建的空对象的原型(__proto__),指向构造函数的 prototype 属性 step3:将这个空对象赋值给构造函数内部的 this,并执行构造函数逻辑 s 阅读全文
posted @ 2020-05-01 21:02 姚啊姚 阅读(345) 评论(0) 推荐(0)
摘要:知识储备: 阮一峰《ECMAScript 6 入门》读书笔记——Promise 阮一峰《ECMAScript 6 入门》读书笔记——async 函数 setTimeout JavaScript 中所有任务分为同步任务和异步任务。 同步任务是指:当前主线程将要消化执行的任务,这些任务一起形成执行栈(e 阅读全文
posted @ 2020-04-29 15:44 姚啊姚 阅读(321) 评论(0) 推荐(0)
摘要:JavaScript 类型及其判断 JavaScript 具有七种内置数据类型,它们分别是:null、undefined、boolean、number、string、object、symbol,其中object 类型又具体包含了 function、array、date 等 对于这些类型的判断,我们常 阅读全文
posted @ 2020-04-29 14:40 姚啊姚 阅读(774) 评论(0) 推荐(0)
摘要:jQuery offset 实现 offset() 方法返回或设置匹配元素相对于文档的偏移。 (一)递归实现: const offset = ele => { let result = { top: 0, left: 0 } /* * nodeType 属性返回以数字值返回指定节点的节点类型。 * 阅读全文
posted @ 2020-04-28 18:28 姚啊姚 阅读(320) 评论(0) 推荐(0)
摘要:块级作用域和暂时性死区 变量提升现象: function foo() { console.log(bar) var bar = 3 } foo() //undefined function foo() { console.log(bar) let bar = 3 } foo() //Uncaught 阅读全文
posted @ 2020-04-27 17:23 姚啊姚 阅读(837) 评论(0) 推荐(0)
摘要:this 到底指向谁: 谁调用它,this 就指向谁。 更确切的说法:this 的指向,是在调用函数时根据执行上下文所动态确定的。 在函数体中,简单调用该函数时(非显式/隐式绑定下),严格模式下 this 绑定到 undefined,否则绑定到全局对象 window/global; 一般构造函数 n 阅读全文
posted @ 2020-04-27 16:11 姚啊姚 阅读(254) 评论(0) 推荐(0)
摘要:使用场景 有些时候,部分函数会高频触发,比如:很多网站会提供这么一个按钮:用于返回顶部,抽象出这个功能需求-- 监听浏览器滚动事件,返回当前滚条与顶部的距离。 function showTop () { var scrollTop = document.body.scrollTop || docum 阅读全文
posted @ 2020-04-18 14:35 姚啊姚 阅读(811) 评论(0) 推荐(0)
摘要:一、基本概念 Generator 函数有多种理解角度。语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。 执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 阅读全文
posted @ 2020-04-09 22:19 姚啊姚 阅读(202) 评论(0) 推荐(0)
摘要:1、Iterator(遍历器) Iterator 的作用有三个:一是为各种数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员能够按某种次序排列;三是 ES6 创造了一种新的遍历命令for...of循环,Iterator 接口主要供for...of消费。 Iterator 的遍历过程是这 阅读全文
posted @ 2020-04-06 16:20 姚啊姚 阅读(258) 评论(0) 推荐(0)
摘要:一、Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是 阅读全文
posted @ 2020-04-06 12:46 姚啊姚 阅读(442) 评论(0) 推荐(0)
摘要:你可能知道,Javascript语言的执行环境是"单线程"(single thread)。 为了解决这个问题,Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous)。 这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务 阅读全文
posted @ 2020-03-31 12:32 姚啊姚 阅读(124) 评论(0) 推荐(0)
摘要:在 JavaScript 中虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但是这些方法都有一个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。为了解决这些问题,人们提出了很多对象创建的解决办法。 在了解这一章的内容之前,最好先回顾一下js的原型继承: js原型继承与原 阅读全文
posted @ 2020-03-28 11:29 姚啊姚 阅读(413) 评论(0) 推荐(0)
摘要:捕获性分组 javascript中捕获性分组是以小括号()来实现,捕获性分组工作模式()会把每个分组里匹配的值保存起来。 比如利用捕获性分组把 hello world 互换成 world hello: 方法一:通过exec函数 var str = 'hello world'; //首先创建好字符串 阅读全文
posted @ 2020-03-26 22:54 姚啊姚 阅读(194) 评论(0) 推荐(0)
摘要:三者的作用:Number(): 可以用于任何数据类型转换成数值;parseInt()、parseFloat(): 专门用于把字符串转换成数值; 一、Number() (1)如果是Boolean值,true和false将分别转换为1和0。(2)如果是数字值,只是简单的传入和返回。(3)如果是null值 阅读全文
posted @ 2020-03-26 15:41 姚啊姚 阅读(365) 评论(0) 推荐(0)
摘要:一、NAN NaN 即 Not a Number ,不是一个数字。 在 JavaScript 中,整数和浮点数都统称为 Number 类型 。除此之外,Number 类型还有一个很特殊的值,即 NaN 。它是 Number 对象上的一个静态属性,可以通过 Number.NaN 来访问 。 在 ECM 阅读全文
posted @ 2020-03-24 17:14 姚啊姚 阅读(6037) 评论(1) 推荐(0)