js
文章平均质量分 74
熊熊UP
这个作者很懒,什么都没留下…
展开
-
搞懂防抖和节流
这里写自定义目录标题防抖和节流抖动含义节流含义相同不同适用场景:防抖的实现节流的实现防抖和节流每次看到防抖和节流都要重新去撸一下基本概念,才能对号入座,所以想添加一些深入思考,让自己对这 两个名词能够刻骨铭心并应用到实践中。抖动是什么意思?什么情况下会带来抖动?防止抖动的逻辑是什么?具体怎么实现?这些都是曾经在我脑海中存在的疑惑。抖动含义类似身体的抖动,网页也会有抖动,所谓的页面抖动就是浏览器频繁布局时,由于计算能力不足导致的页面颤动现象。防止抖动就是利用类似于减少回调执行次数的手段,对短时间内的原创 2021-07-28 10:08:07 · 210 阅读 · 0 评论 -
事件流(事件冒泡与事件捕获)和事件委托
前言:在一张纸上画一个同心圆,如果把手指放在圆心上,那么你的手指指向的是纸上的所有圆。如下图如果你单击了start按钮,你也单击了按钮的容器元素(绿色盒子和红色盒子),甚至也单击了整个页面**事件流描述的是从页面中接收事件的顺序,但是IE和Netscape Communicator开发团队关于事件流的概念是完全相反的。IE 的事件流是事件冒泡流,Netscape 则是事件捕获流事件冒泡(...原创 2020-05-09 18:23:59 · 259 阅读 · 0 评论 -
寻找字符串中括号的对数
实现功能函数 getBracketsNumber入任意字符串,计算出字符串中有多少对小括号例如:console.log(getBracketsNumber('((()((hhk))')) // 3console.log(getBracketsNumber('()(')) // 1方法一:数组循环:function getBracketsNumber(str){ let array...原创 2020-04-28 14:39:22 · 853 阅读 · 0 评论 -
ES6不用循坏快速创建从0到N的数组的方法及详解
let a=[...(new Array(n)).keys()];let b=Array.from({length:n},(v, k) => k);let c = (n) => Array.from({length:n}).map((v,k) => k);原创 2018-03-13 10:42:45 · 10060 阅读 · 0 评论 -
JS 中call、apply、bind 的作用与区别及源码分析
作用: call、apply、bind 方法都可以改变函数运行时的上下文区别:1、 call、apply 方法返回的是函数的调用, 而 bind 方法返回的是函数方便之后调用。2、apply以数组的形式传参,call、bind 以序列化的形式传参。示例代码:function product () {}product.prototype={ name:'product', pri...原创 2020-03-11 12:40:37 · 233 阅读 · 0 评论 -
VUE 特性一:数据双向绑定
VUE是一种MVVM开发模式,VUE 区别于React 等其他前端框架的重要特性之一是VUE 实现了 数据与视图的双向绑定。一、双向绑定PK :如果要实现一个输入特定信息的输入框的双向绑定,传统做法与VUE 框架下的示例:<!DOCTYPE html><html><head> <title>数据双向绑定实现</title>...原创 2020-03-11 10:12:36 · 347 阅读 · 0 评论 -
ECMAScript基本类型与引用类型
ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值两种类型PK:1、保存方式不同,访问方式不同:基本类型值:指的是简单的数据段例如下面五种数据类型的值:String、Number、Undefind、Null、Boolean。引用类型的值:也就是对象类型的值,例如:Object 、Array 、Function 、Data、RegExp 等。除此之外,为了便于操作...原创 2020-03-09 14:25:38 · 266 阅读 · 0 评论 -
Web前端框架Vue+webpack搭建
Web前端框架Vue+webpack搭建利用vue自己的脚手架工具vue-cli搭建起基本的环境配置,再通过npm包管理工具引入相应的依赖来完善项目的各种依赖框架。基本步骤,参考URL 1. 在开发之前需要首先安装node.js,直接百度搜索或者在其中文官网也可以下载http://nodejs.cn/download/(默认全局安装node,npm,无需手动配置环境变量,即可...原创 2018-04-17 19:01:55 · 2465 阅读 · 1 评论 -
特定场景下返回带补丁的extend()
定义一个拓展函数,用来将第二个及后续的参数复制到第一个参数。这里处理了IE bug:在多数版本中,如果对象O的属性拥有一个不可枚举的同名属性,则for/in循环不会枚举对象O的可枚举属性,也就是说将不会正确地处理诸如toString的属性,除非我们显示地检测它。<script>var extend=(function(){ for(var p in {toString:n...翻译 2018-03-15 20:04:25 · 261 阅读 · 1 评论 -
优化斐波拉切数列算法
传统方法(耗时长):const fibonacci = (n) => { let arr = [0,1]; for(let i=2;i<=n;i++){ arr[i] = arr[i - 1] + arr[i - 2] arr.push(arr[i]); } return arr[n]}优化方法一(利用递归):const fibonacci = (n) => ...原创 2018-03-13 11:59:45 · 494 阅读 · 0 评论 -
集合类
实现从JS值到唯一字符串的映射,将字符串用作属性名Set.js:值的任意集合 Function Set(){ this.value={}; this.n=0; this.add.apply(this,arguments); } Set.prototype.add=function(){ for (var i = 0; i...翻译 2018-03-16 16:05:59 · 130 阅读 · 0 评论