javascript技巧

详解JavaScript私有类字段和TypeScript私有修饰符

2021-04-28
JavaScript私有类字段和隐私需求 在过去,JavaScript 没有保护变量不受访问的原生机制,当然除非是典型闭包. 闭包是 JavaScript 中许多类似于私有模式(如流行的模块模式)的基础.但是,近年来 ECMAScript 2015 类被使用后,开发人员感到需要对类成员的隐私进行更多控制. 类字段提案(在撰写本文时处于第 3 阶段)试图通过引入私有类字段来解决问题. 让我们看看它们是什么样子的. 一个 JavaScript 私有类字段的例子 这是一个带有私有字段的 JavaScr

JavaScript实现随机码的生成与校验

2021-04-28
JavaScript之随机码的生成与校验,供大家参考,具体内容如下 由于获取事件源有两种写法,所以在此处都附上: 这个是直接用var去定义的 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>随机验证码校验</title> <style type="text/css"> #c

JS异步堆栈追踪之为什么await胜过Promise

2021-04-28
概述 async/await和Promise的根本区别在于await fn()暂停当前函数的执行,而promise.then(fn)在将fn调用添加到回调链后,继续执行当前函数. const fn = () => console.log('hello') const a = async () => { await fn() // 暂停 fn 的执行 } // 调用 a 时,才恢复 fn 的执行 a() // "hello" const promise = Promise.r

JS ES6异步解决方案

2021-04-27
最初使用回调函数 ​ 由于最初j s官方没有明确的规范,各种第三方库中封装的异步函数中传的回调函数中的参数没有明确的规范, 没有明确各个参数的意义, 不便于使用. ​ 但是node中有明确的规范 ​ node中的的回调模式: 1. 所有回调函数必须有两个参数,第一个参数表示错误,第二个参数表示结果 2. 所有回调函数必须作为函数最后的参数 3. 所有回调函数不能作为属性出现 es6 异步处理模型 Es6 出现以后, 官方就提出了异步处理的规范, 提出了一种适用于所有异步场景的处理模型.该模型有:

JavaScript实现长图滚动效果

2021-04-27
本文实例为大家分享了JavaScript之长图滚动的具体代码,供大家参考,具体内容如下 长图的滚动会涉及定时器: 我们先来回顾下定时器: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>定时器回顾</title> </head> <body> <button id="

微信小程序视频弹幕位置随机

2021-04-27
本文实例为大家分享了微信小程序视频弹幕位置随机的具体代码,供大家参考,具体内容如下 最近更新开发工具之后,微信小程序视频播放弹幕不再自动随机,所以就用了一个比较取巧的方法(多条空弹幕和自己要发送的弹幕一起发送,利用随机数控制顺序就行了); wxml代码 <!--pages/study/video/videoplay/videoplay.wxml--> <view class="page-body"> <view class="page-secti

JS装饰者模式和TypeScript装饰器

2021-04-27
装饰者模式介绍 装饰者模式(Decorator Pattern)也称为装饰器模式,在不改变对象自身的基础上,动态增加额外的职责.属于结构型模式的一种. 使用装饰者模式的优点:把对象核心职责和要装饰的功能分开了.非侵入式的行为修改. 举个例子来说,原本长相一般的女孩,借助美颜功能,也能拍出逆天的颜值.只要善于运用辅助的装饰功能,开启瘦脸,增大眼睛,来点磨皮后,咔嚓一拍,惊艳无比. 经过这一系列叠加的装饰,你还是你,长相不增不减,却能在镜头前增加了多重美.如果你愿意,还可以尝试不同的装饰风格,只要装

如何用JavaScript检测当前浏览器是无头浏览器

2021-04-27
什么是无头浏览器(headless browser)? 无头浏览器是指可以在图形界面情况下运行的浏览器.我可以通过编程来控制无头浏览器自动执行各种任务,比如做测试,给网页截屏等. 为什么叫"无头"浏览器? "无头"这个词来源于最初的"无头计算机(Headless computer)".维基百科关于的"无头计算机"词条: 无头系统(headless system)是指已配置为无须显示器(即"头").键盘和鼠标

JS什么场景不适合箭头函数

2021-04-27
概述 这些年来,ES6 将js的可用性提升到一个新的水平时: 箭头函数.类等等,这些都很棒. 箭头函数是最有价值的新功能之一,有很多好文章描述了它的上下文透明性和简短的语法. 但每个事务都有两面.通常,新特性会带来一些混乱,其中之一就是箭头函数被误导了.本文将介绍一些场景,在这些场景中,你应该绕过箭头函数,转而使用良好的旧函数表达式或较新的简写语法.并且要注意缩短代码,因为这会影响代码的可读性. 定义对象上的方法 在js中,方法是存储在对象属性中的函数.当调用该方法时,this将指向该方法所属的

Javascript前端优化代码

2021-04-27
if 判断的优化 JavaScript条件语句在我们平时的开发中是不可避免要用到的,但是很多时候我们的代码写的并不好,一连串的if-else或者多重嵌套判断都会使得代码很臃肿,下面举例进行优化. 需求:现在有 4 个产品,分别是手机.电脑.电视机.游戏机,当然每个产品显示的价格不一样. 1.最简单的方法:if 判断 let commodity = { phone: '手机', computer: '电脑', television: '电视', gameBoy: '游戏机', } function

聊聊JS ES6中的解构

2021-04-27
概述 es6新增了一种从数组或者对象中获取指定元素的方式,这种方式就是我们今天要说的解构. 先来说说数组的解构 在有解构之前呢,我们获取数组中的指定元素通常是根据索引去做的: const arr = [1, 2, 3]; const a = arr[1]; 有了解构之后呢,我们便可以使用如下方式快速的去获取数组中的某个元素: const arr = [1, 2, 3]; const [a, b, c] = arr; console.log(a); console.log(b); console.

7个你应该知道的JS原生错误类型

2021-04-27
概述 从浏览器控制台到运行 Node.js的终端,我们到处都会看到错误.本文的重点是概述我们在js开发过程中可能遇到的错误类型. 提示:良好的错误提示会导致快速而无痛的发展经历与缓慢而痛苦的发展经历之间的区别.在编写可重用的代码时,请确保自己在编写清晰易懂的错误处理代码. 1. RangeError 当数字超出允许的值范围时,将会抛出此错误. 例如 const l = console.logconst arr = [90,88] arr.length=90**99 我们有一个数组,带有两个元素的

JavaScript类型检测的方法实例教程

2021-04-27
前言 JavaScript是web前端广泛应用的语言之一,在网页应用制作.脚本制作.小程序等诸多领域具有不可替代的的地位.笔者学习了一端时间的前端,颇感JS知识点的繁碎,故将学习到的一些知识.思考和感悟记录下来. JS基本类型 JavaScript的基本类型分为原始基本类型和引用数据类型: 原始基本类型: number string boolean null undefined symbol 引用数据类型: Object Function Array Date RegExp 注意:ES5中没有s

详解JS中的compose函数和pipe函数用法

2021-04-27
compose函数 compose函数可以将需要嵌套执行的函数平铺,嵌套执行就是一个函数的返回值将作为另一个函数的参数.我们考虑一个简单的需求:这个需求很简单,直接一个计算函数就行: const calculate = x => (x + 10) * 10; let res = calculate(10); console.log(res); // 200 但是根据我们之前讲的函数式编程,我们可以将复杂的几个步骤拆成几个简单的可复用的简单步骤,于是我们拆出了一个加法函数和一个乘法函数: cons

详解JavaScript中的执行上下文及调用堆栈

2021-04-27
一.执行上下文是什么 代码运行是在一定的环境之中运行的,这个运行环境我们就成为执行环境,也就是执行上下文,按照执行环境不同,我们可以分为三类: 全局执行环境:代码首次执行时候的默认环境 函数执行环境:每当执行流程进入到一个函数体内部的时候 Eval执行环境:当eval函数内部的文本执行的时候 二.执行上下文栈是什么 既然是'栈',那就得符合'栈'的特性,即数据结构是先进后出.下面我们看一段代码: function cat(a){ if(a<0){ return false; } console.

js数组去重的11种方法

2021-04-27
在实际工作或面试中,我们经常会遇到"数组去重"问题,接下来就是使用js实现的数组去重的多种方法: 1.将数组的每一个元素依次与其他元素做比较,发现重复元素,删除 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5,5]; console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5, 5] function noRepeat1(arr) { for(var i = 0;

何时使用Map来代替普通的JS对象

2021-04-27
1. Map 接受任何类型的键 如前所述,如果对象的键不是string或symbol,JS 将隐式地将其转换为字符串. 幸运的是,map的键类型没有问题 const numbersMap = new Map(); numbersMap.set(1, 'one'); numbersMap.set(2, 'two'); [...numbersMap.keys()]; // => [1, 2] 1和2是numbersMap中的键,这些键的类型(数字)保持不变. 可以在mpa中使用任何键类型:数字.布尔

JavaScript实现简单图片切换

2021-04-27
本文实例为大家分享了JavaScript实现简单图片切换的具体代码,供大家参考,具体内容如下 下边给出几种方法进行图片切换: 方法一 (小白专用款!简单易懂) 下边附上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片切换2</title> <style type="text/c

JavaScript使用canvas绘制坐标和线

2021-04-27
本文实例为大家分享了JavaScript使用canvas绘制坐标和线的具体代码,供大家参考,具体内容如下 具体代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>在指定位置画多个点</title> <style> canvas{ border: 1px dashed gray; } &

js实现简单省市区三级选择联级

2021-04-26
本文实例为大家分享了js实现省市区三级选择联级的具体代码,供大家参考,具体内容如下 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <select id="province"> <