
JAVASCRIPT VS TYPESCRIPT
记录一些js和ts的使用
looper.zhuo
编程从入门到放弃到挣扎到了解到熟悉到精通
展开
-
Jsonp请求的原理实现
jsonp解决ajax的跨域原理jsonp只能解决ajax类型的get跨域请求 jsonp并不是ajax情况,而是一般的get请求,并且在后端动态拼接一个函数调用,在前端执行该函数实现原理 浏览器端:设置我们需要的script标签和请求的回调函数的执行体,并把函数名传到后端做进一步处理<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/...原创 2020-11-02 13:03:39 · 423 阅读 · 0 评论 -
谈谈JAVASCRIPT中的纯函数
引言在使用JS中的函数时,也没怎么去区别什么时候该用纯函数,用的很是随意,由于知道一些引用变量是浅拷贝,在函数里改变属性会出错,所以平时在使用函数的时候也注意这些地方。直到接触到react,尤其是redux时候,只能用纯函数去实现,所以趁这次整理一次,避免踩坑什么是纯函数函数的出口只依赖于函数的形参,和外界变量没有联系 函数在执行过程中不产生副作用,即为不改变传入形参的值这样说起来比较抽象,我们分别举列子来说明函数的出口只依赖于函数的形参 var count1=1 .原创 2020-10-13 15:19:09 · 192 阅读 · 0 评论 -
JS之reduce()实现数组去重(数组包含对象)
多维数组去重(包含对象)先来个复杂的数据结构去重 var arrayNum = [1, 2, [2, 3, 4], [4, 1, 6], [{name:'looper'},{name:'zhuo'}], [{name:"looper"}] ] var hashKey={} var result = [...new Set(arrayNum.reduce((item, next) => { return item.concat(next)..原创 2020-09-08 17:31:17 · 1997 阅读 · 1 评论 -
彻底搞懂JavaScript(ES6)的深拷贝与浅拷贝
JS变量的存储方式开始之前先理解下面的几句话深拷贝和浅拷贝是变量在内存中的存放位置不同(堆,栈) 在js中,对象和数组这种复杂的数据结构是放在堆中,堆的地址放在栈中 js中的number,string,bool简单类型是放在栈中 一般直接存放在栈里的变量对应深拷贝,放在堆里的变量是浅拷贝深拷贝实质:深拷贝就是完全复制一份地址,完全是开辟了一个新的空间,如果改变原变量,则不会影响深拷贝出来的变量如果变量存放在栈中,则直接在栈里开辟一个新空间,存放该值 如果变量存放在堆...原创 2020-09-05 18:08:38 · 1133 阅读 · 0 评论 -
彻底搞懂Javascript函数防抖与节流
为什么会有函数防抖与节流这个概念引用一个经典的例子 我们知道目前的一种说法是当 1 秒内连续播放 24 张以上的图片时,在人眼的视觉中就会形成一个连贯的动画,所以在电影的播放(以前是,现在不知道)中基本是以每秒 24 张的速度播放的,为什么不 100 张或更多是因为 24 张就可以满足人类视觉需求的时候,100 张就会显得很浪费资源。再举个栗子,假设电梯一次只能载一人的话,10 个人要上楼的话电梯就得走 10 次,是一种浪费资源的行为;而实际生活正显然不是这样的,当电梯里有人准备...原创 2020-09-04 10:53:10 · 244 阅读 · 1 评论 -
Type Script高级语法之函数类型接口
函数类型接口:类似于索引签名,对我们的函数进行约束约束:对形参的类型的约束,对返回值的约束//定义一个函数类型的接口//约束:形参必须是两个,第一个string,第二个是number,返回值是stringinterface funcControl { (key: string, value: number): void}let funcTest: funcControl = function (name: string, age: number): void {//声明一个函.原创 2020-07-17 23:17:08 · 152 阅读 · 0 评论 -
函数式编程封装ajax,并实现缓存机制
varpureHttpCall=memoize((url,params)=>$.getJSON(url,params));//constpureHttpCall=memoize((url,params)=>()=>$.getJSON(url,params));varmemoize=(f)=>{constcache={};return(...args)=>{varargStr...原创 2020-07-16 09:41:46 · 199 阅读 · 0 评论 -
彻底搞懂Type Script中的索引签名
索引签名含义索引签名是type script里的一个语法糖 所谓索引,就是根据一定的指向返回相应的值 比如数组的索引就是下标0,1,2.... type script里的索引签名有两种:数字索引和字符串索引数字索引:通过定义接口用来对数组的约束数字索引的本质和数组索引的查找形式一致,只是定义形式不同如果数字索引的数组里存了其他类型,则报错//数组,里面存的值可以为各种类型var arr=[1,2,'3',{name:"looper"}]console.log("普通数组.原创 2020-07-17 00:24:07 · 5767 阅读 · 2 评论 -
ES5中的对象冒充继承与原型继承,再也不怕面试官问了
前言面试官:你对es6类了解吗?我:肯定了解啊,我使用angular8,天天都在和类打交道,比如继承,实现接口,我都比较熟悉的面试官:好的。嗯......那你给我讲一下es5的里的类继承方式吧我:啊.......es5还有类的继承吗,不就是创建创建一个构造函数,然后在原型上创建一些属性和方法,实例就可以去使用,利用原型链去查找实现的。面试官:我不是问你这个,我给你举个例子吧,比如有一个func A(){},有一个funcB(){},有哪些什么方法实现B继承A我:好像可以使用call.原创 2020-07-15 16:46:47 · 190 阅读 · 0 评论 -
JS实现界面有滚动条,滚动到最底部时候触发事件
代码实现:JS:window.onscroll = function () { //变量scrollTop是滚动条滚动时,距离顶部的距离,兼容ie var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //变量windowHeight是可视区的高度,兼容ie var windowHeight = document.documentElement.clientHei原创 2020-07-07 16:09:44 · 1440 阅读 · 0 评论 -
手写一份promise的实现
背景最近学习es6新的对象,promise都让我觉得很是重要,于是去查看了源码,决定手写一份promise,了解一下内部的实现Promise的特点用于封装异步操作 可以用于链式执行,串行处理结果很有用途 promise是一个对象,初始化为pending状态,状态一经改变就完成 不管执行成功还是失败都有个结果,且不能逆转 但是promise的中间状态不可控制实现基于以上的特点和查阅了相关资料,实现了原生的promise所有方法github地址:点击这里查看源码...原创 2020-07-06 19:10:30 · 199 阅读 · 1 评论 -
透彻讲解JS的单线程,宏队列,微队列的执行,看完还不会,转行吧!
开局一张图,过程全靠编您信吗,.........好了,回归正题背景:最近在看js的执行机制时候,联想到很多问题,大家都知道:浏览器是多线程的,JS是单线程的,浏览器在解析的时候只会分配一个线程来执行js 在浏览器中打开一个页面就占用了一个进程,加载页面的时候,浏览器分配一个线程去计算DOM树,分配其它的线程去加载对应的资源文件...再分配一个线程去自上而下执行JS需要知道的几个问题:自上而下执行JS:意思就是一个js文件,从上往下依次执行 js的线程始终只有一个 同步:在一个原创 2020-07-04 19:08:16 · 779 阅读 · 1 评论 -
es6Promise熬夜整理
目录1.Promise是什么:2.基本用法:3.Promise中的catch:4.Promise中的finally:5.promise.race()1.Promise是什么:promise是es6新生的的异步操作一个对象,也可以说是一个容器,是一个链式执行的方式,只看重结果,不考虑中间的监听过程,执行结束后只有两种结果(成功,失败)中的一种,一旦执行完成就结束了。2.基本用法:promise有个构造函数,有两个参数resolve和reject,当时执行到res..原创 2020-06-23 17:27:25 · 243 阅读 · 6 评论 -
Let,Var,Const区别整理
作用域:(es6)calss>function>if(){}=for(){}CONST:Const是一个定义初始化变量的关键字,该变量一旦初始化就不能再改变,只能在块作用域和函数作用域使用。const不能在class作用域定义,只能在function,if,for定义使用,不能再其外部使用,只能在当前块作用域使用,const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。 本质:const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址...原创 2020-06-23 17:18:27 · 1024 阅读 · 5 评论