JS基础
文章平均质量分 52
月了不光
这个作者很懒,什么都没留下…
展开
-
js 手写call方法
1.手写call方法 Function.prototype.call4=function(thisArg){ //先判断是不是空的,是的话指向window,不是的话采用Object方法,将thisArg传进去 thisArg= thisArg==null?Window:Object(thisArg); // log(thisArg); //调用的对象 //然后将剩下的使用[...rest]将它变为数组,然后返回一个新对象(slice复制原创 2022-05-18 18:10:10 · 1044 阅读 · 0 评论 -
手写 防抖和节流JS
手写 防抖和节流JS原创 2022-05-18 18:08:25 · 107 阅读 · 0 评论 -
js深拷贝、将对象转换为一维数组、查找一个元素里是否包含另一个元素的某一个值
js深拷贝、将对象转换为一维数组、查找一个元素里是否包含另一个元素的某一个值原创 2022-05-18 18:07:44 · 283 阅读 · 0 评论 -
JavaScript中class详解:如何使用与继承,以及继承中关于ES6与ES5的区别
46 class语法 46.1 class语法详解 1.组合模式用class 1.class里的所有方法定义在类的prototype属性上面 2.ES5构造函数Point对应ES6的Point类的构造方法 class Point{ constructor(x,y){ this.x=x; this.y=y; } toString(){ console.log(this.x+this.y); } } let point=原创 2022-02-18 17:16:29 · 344 阅读 · 0 评论 -
JavaScript中Map数据结构的基本属性、用法与对象的切换,WeakMap数据类型与应用
45 Map数据结构 45.1 Map的基本用法 键名必须数据类型和值一模一样 1.Object 字符串-值 2.Map 值-值 hash结构 key:value 对象的好处是独一无二 创建后的地址不一样 let s=new Set(); let s=new Set(); //value只能出现一次 s.add() let m=new Map(); m.set(o,"aabbcc"); m.get(o) //aabbcc let o={ x:1, y:2 } l原创 2022-02-18 17:13:39 · 620 阅读 · 0 评论 -
数组的扩展方法,symbol数据类型与具体属性方法,对象的所有方法与拓展
40 40.1 数组的扩展方法 Array.from() 先看.length方法,再看自然数。要是无len,会返回[] array.from(arr,x=>x*x); Array.of() 老模式兼容,传数组项目 相当于Array copyWithin() copy在内部 修改当前数组,覆盖原有成员 [].copyWithin(target,start,end) //target 该位置开始替换数据 //start x 该位置开始读取数据 //end x 该位置结束读取数据 find()原创 2022-02-18 17:12:01 · 182 阅读 · 0 评论 -
箭头函数和普通函数的区别,什么是函数尾调用?函数尾调用的优化方法
38 函数 38.1 函数参数设置 1.使用参数默认值时,函数不能重名 2.函数默认参数是惰性求值(运行时才求值 3.尾部才参数默认值才可省略,严格undefined,null没有效果 function foo(x,y,z){} foo.length //3 function foo(x,y,z=1){} foo.length //2 4.fn.length 非常受到默认参数的影响 5.一旦设置参数默认值,参数会单独形成一个作用域。语法行为在不设置参数默认值时是不会实现的。 ex: let x=1;原创 2022-02-18 17:08:35 · 410 阅读 · 0 评论 -
字符串模板以及字符串拓展方法,数字格式的方法拓展与具体Math方法
36 字符串 36.1 字符串模板 let oDiv=document.querySelector("div"); let name; let json={ div:{ className:"msg", child:{ ul:{ className:"msg", child:{原创 2022-02-18 17:07:26 · 105 阅读 · 0 评论 -
解构赋值是什么?如何使用?
35 解构赋值 35.1数组结构赋值 1:解析解构,需模式匹配 2:左边跳,右边也跳 let [a,,c]=[1,2,3] //a:1,c:3 … 拓展符 let [a,...b]=[1,34325,35435,234123,5645]; //a:1,b:[34325,35435,234123,5645] 左侧赋值后,右边剩下的值都会变成b的一部分 3:…必须是最后的element 4:数据结构一样,右侧少数据-不完全结构 let [a,[b,c],d]=[1,[23],3] //a:1,b:23原创 2022-02-18 17:05:30 · 221 阅读 · 0 评论 -
高阶函数的几种类型与具体实现
32 高阶函数 32.1递归函数 arguments.callee (代替函数名) 是一个指向正在执行的函数的指针。 function fn(num){ if(num<=1){ return 1 }else return num+fn(num-1); // arguments.callee(num-1); } 但是严格模式下不能用,因此可以: let fac=(function fn(num){ if(num<=1){ return原创 2022-02-18 17:04:10 · 126 阅读 · 0 评论 -
构造函数-组合模式-继承
构造函数模式,构造函数与工厂模式的区别。模式:组合模式,动态原型,寄生构造, 严格模式,原型继承。继承:经典继承,组合继承,原型式继承,寄生式继承-寄生组合继承原创 2022-02-18 17:02:34 · 90 阅读 · 0 评论 -
防抖和节流
防抖和节流 防抖 let input=document.querySelector("input"); let timer=null; input.oninput=function(){ //oninput 事件在用户输入时触发 clearTimeout(timer); timer=setTimeout(()=>{ console.log(this.value); },1000) } 节流 let count=0; let flag=true; bt原创 2022-02-18 16:57:06 · 381 阅读 · 0 评论 -
事件绑定,事件监听,事件委托
事件绑定,事件监听,事件委托基础理解原创 2022-02-18 12:12:25 · 348 阅读 · 0 评论