Js 基础笔记
起晚的蜗牛
Though getting up late, I will keep going and never give up.
展开
-
柯里化
1. 纯函数2. 抽象函数3. 延迟执行经典题: currying + 隐士转换https://www.jianshu.com/p/2975c25e4d71// 实现一个add方法,使计算结果能够满足如下预期:add(1)(2)(3) = 6;add(1, 2, 3)(4) = 10;add(1)(2)(3)(4)(5) = 15;function add() { // 第一次执行时,定义一个数组专门用来存储所有的参数 var _args = ...原创 2020-08-11 10:45:01 · 110 阅读 · 0 评论 -
apply 和call 函数的实现
apply 和call 函数的特性:第一个参数改变this 指向 第一个参数为null时,默认this指向window apply 函数, 原函数参数以数组形式作为第二个参数; call函数, 原函数参数从第二个参数开始,依次罗列; 原函数有返回值时,apply 和 call 函数也要返回。apply 和call 函数的实现要用到:this的执行上下文属性 eval 函...原创 2019-11-03 01:23:39 · 193 阅读 · 0 评论 -
bind 函数的实现
实现bind函数之前,首先了解bind函数的特性:预置参数; 改变原函数的this指向; 返回一个函数; 返回函数的返回值类型与原函数一致,即原函数有返回值,bind后的函数也要有返回值; 返回的函数可以作为构造函数,且保留原函数的原型链;实现前4个特性很简单:Function.prototype.newBind = function (target) { const ...原创 2019-11-02 22:19:20 · 1659 阅读 · 0 评论 -
Promise.all 的实现
Promise.all 的特性:返回也是一个promise; 返回参数也是数组,与输入一一对应; 只要有一个promise失败,立刻报错返回,不再等待其他;Promise.prototype.all = function(promiseList){ const result = []; const count =0; // 返回一个promise return new ...原创 2019-10-29 23:08:23 · 299 阅读 · 0 评论 -
mouseleave 和 mouseout , mouseenter 和 mouseover,mouseover 和mousemove
mouseenter 和 mouseleave 是一对事件,分别指鼠标移入和离开当前元素, 这两个事件不冒泡;mouseover 和 mouseout 是一对事件,指鼠标移入和离开元素,但是这个两个事件是冒泡,也就是说,鼠标移入或离开当前元素的子元素时,事件会冒泡到当前元素,当前元素的事件会被触发。mousemove 是 鼠标在元素上移动时触发,具有冒泡性质。鼠标在元素内部移动时也会触发该...原创 2018-07-19 01:10:29 · 963 阅读 · 0 评论 -
onWheel 和 onScroll 区别
onwheel 事件在鼠标滚轮在元素上下滚动时触发。同样可以在触摸板上滚动或放大缩小区域时触发(如笔记本上的触摸板)。onscroll 事件在元素滚动条在滚动时触发。滚动条必须存在,否则不会触发。无论以那种方式,只要滚动条滚动,事件都会触发。触发方式:鼠标滚轮,鼠标拖动,键盘上下键,或者设置的滚动函数,如 scrollTo,scrollBy,scrollByLines, scrollByPag...原创 2018-07-19 00:11:30 · 6006 阅读 · 0 评论 -
Javascript 数据类型
Javascript 的数据类型可以分为两类:原始类型和对象。可以使用typeof来判别数据类型; 数据类型转换时,null,undefined,空字符串,NaN会转换为false. 空对象{},空数组[], 正负无穷大 +infinity -infinity 会转化成true。 同时可以采取全局函数或者内置对象Number 转换数字和字符串;所有的原始数据都是按值传递,对象都是按地址传递原创 2017-11-26 21:24:53 · 166 阅读 · 0 评论 -
防抖(debounce) 和 节流(throttling)
防抖和节流是针对响应跟不上触发频率这类问题的两种解决方案。 在给DOM绑定事件时,有些事件我们是无法控制触发频率的。 如鼠标移动事件onmousemove, 滚动滚动条事件onscroll,窗口大小改变事件onresize,瞬间的操作都会导致这些事件会被高频触发。 如果事件的回调函数较为复杂,就会导致响应跟不上触发,出现页面卡顿,假死现象。 在实时检查输入时,如果我们绑定onkeyup事件发请求去...原创 2018-07-05 01:34:50 · 145320 阅读 · 21 评论 -
parseInt, parseFloat, Number 函数对比
Javascript 中提供了三种函数,将变量转化成数字类型。parseInt 和 parseFloat 用来解析以数字开头的部分数字字符串;1) parseInt(arg1, arg2), 只能用于将字符串转换成10进制的整数,第二个参数指定转换基数,即第一个参数的原始进制;第二个参数不存在时,parseInt 只能识别,0x 开头的16进制数和0开头的8进制数, 其他都按10进制转10...原创 2018-07-27 00:22:34 · 593 阅读 · 0 评论 -
polyfill
在查资料时,常常看到polyfill 这个词,不知道其对应的中文术语。查看解释,感觉他就是用来向下兼容浏览器的适配器。以下有一段关于他的解释:“在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别? 一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现 一个polyfill就是一个用在浏览器API...转载 2018-07-25 20:58:46 · 4373 阅读 · 0 评论 -
AJAX
新接触的项目中使用的Fetch技术发送网络请求,本来想对比一下传统的XHR与fetch 的区别。但是翻阅他人博客时,发现AJAX和XHR的关系不明,有博客认为XHR和fetch都是实现AJAX请求的方法,也有博客直接认为XHR就是AJAX。本人比较偏向第一种说法,因为AJAX并不是一个可以独立工作的技术,他更像是一种技术方案。一种为了解决在不刷新或重定向页面的前提下,实现与服务端的数据交互和客户端...翻译 2018-07-27 01:18:14 · 159 阅读 · 0 评论 -
react 中使用 plupload 上传文件
这几天做一个项目的迭代开发,需要在react 中使用plupload 插件实现上传文件。需求很简单,如下图,点击“...” 按钮选择文件,点击“Import”按钮上传文件。 plupload 上传文件大概分为以下几步:1. 新建一个uploader实例,并在构造时配置好上传的相关属性。const uploader = new plupload.Uploader({ browse_butt...原创 2018-06-14 00:05:43 · 6765 阅读 · 2 评论