js
91周先生
这个作者很懒,什么都没留下…
展开
-
vue中的深拷贝
function deepCopy(obj,cache = []){ // 如果为普通数据类型,则直接返回,完成拷贝 if (obj===null || typeof obj !== "object"){ return obj } // cache用来储存原始值和对应拷贝数据,在递归调用deepCopy函数时,如果本次拷贝的原始值在之前已经拷贝了,则直接返回储存中的copy值,这样的话就不用再循环复制本次原始值里面的每一项了。 ..原创 2022-05-24 16:09:18 · 2913 阅读 · 0 评论 -
异步加载js
1.动态创建scriptfunction loadscript(url,callback){ let script=document.createElement('script'); if(script.readystate){ script.onreadystatechange=function(){ if(script.readystate=="loaded"||script.readystate=="complete"){原创 2021-05-20 18:40:20 · 88 阅读 · 0 评论 -
浏览器端事件循环
今天来讲一下浏览器端的事件循环,js只能在浏览器当中解析,而且js是一个单线程的语言,她的异步和多线程是通过事件循环机制来实现的首先我们要知道js如何执行的:从前到后,一行一行执行如果某一行执行报错,则停止下面代码的执行先把同步代码执行完,再执行异步然后看下图,这是一个简易的Event Loop流程这其中比较重要的部分有调用栈(call stack),异步处理模块(Web Apis),任务队列,宏任务队列,微任务队列。简易流程我先简单讲解一下顺序流程。js代码开始在全局运行,从上到下执原创 2021-04-18 09:05:53 · 167 阅读 · 2 评论 -
es3,es5,es6[对象的深浅拷贝] ②深拷贝
在上一篇文章中我们探讨了浅拷贝的知识,这一篇我们来讲一下深拷贝的原理。递归方法我们要知道深拷贝是在浅拷贝的基础之上的原创 2021-04-07 10:33:10 · 217 阅读 · 0 评论 -
es3,es5,es6[对象的深浅拷贝] ①浅拷贝
123原创 2021-03-30 20:15:27 · 305 阅读 · 0 评论 -
迭代器接口与for...of
首先在ES6中有三大最重要的部分:class(类相关),promise,module(模块化)。我主要说promise,这里有一个知识顺序就是promise是什么,解决了什么问题,然后promise的最终解决方案是async await,同时async await的由来是生成器,生成器生成的是迭代器,这样就连接起来了。为了引出迭代器我先写了一些东西:var arr = [1, 2, 3, 4] var str = 'abc' var obj = { a: 1, b: 2原创 2021-03-14 16:47:25 · 158 阅读 · 0 评论 -
es6 变量的解构赋值
ES6允许按照一定模式,将数值和变量一 一对应,比如: let [a, b] = [1, 2] // a=1 b=2 let [a, b, c] = [1, [2, 3], 4] //a=1 b=[2,3] c=4 let [ , ,c]=[1,2,3] //c=3 let [a,b,c]=[1] //a=3 let { foo, bar } = { foo: 'aaa', bar: 'bbb' }//foo "aaa" bar "b原创 2021-03-11 19:46:33 · 95 阅读 · 0 评论 -
let和var的区别
let是es6时新增的原创 2021-03-02 19:49:25 · 183 阅读 · 0 评论 -
前端常见的坑
1.解决placeholder在ios上的小坑在苹果高版本iPhone6、7 上发现了一个问题,当设置placeholder显示的字体大小的时候,会被遮挡掉一部分解决方法:先设置input 里面的字体大小需要大于placeholder的字体大小就像这样:巨恶心;但我们只要这样:input的字体大小大于placeholder的字体大小就可以解决问题:...原创 2021-01-19 16:42:05 · 369 阅读 · 0 评论 -
js数组与伪数组分辨
常见的伪数组是由元素获取的到的如:document.getElementsByTagName(‘li’)数组于伪数组的差别有不具有数组所具有的方法和伪数组的length属性是静态的不可变分辨1.console.log打印出来可以打印出来分辨:真数组:伪数组:或者__proto__是object;总之不是Array2.Array.isArray()这个方法可以判断该对象是不是数组。是数组就返回true,不是数组就返回falseArray.isArray(arr)3.Object.p原创 2021-01-10 10:26:51 · 866 阅读 · 0 评论 -
js简易数组去重方法
1.利用splicevar arr = [1, 2, 123, 124, 12, 1, 3, 2, 4] function QC(arr) { for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] === arr[j]) {原创 2021-01-06 20:01:11 · 92 阅读 · 0 评论 -
案例:js二级联动
这是js常用功能,比如省份和城市的联动这是页面标签 <form action=""> 省份:<select id="pre"></select> 城市:<select id="cy"></select> </form>这是数据 var provinces = ["请选择省份", "北京市", "天津市", "上海市", "重庆市", "江苏省", "浙江省", "江西省", "海南省原创 2020-12-29 20:49:45 · 199 阅读 · 0 评论 -
动态创建表格
在很多时候我们的网页内容并不是写死的,而是由后台发送的资料来组成的;也就是动态生成页面数据:var head_data = [{ name: '商品' }, { price: '价格' }]var Commodity_data = { "author": "韩帅", "telNum": "5201314", "shop_data": [{ "addresser": "淘宝网", "com原创 2020-12-29 14:43:48 · 127 阅读 · 0 评论 -
DOM类名操作classList 属性
classList 属性返回元素的类名,作为 DOMTokenList 对象。该属性用于在元素中添加,移除及切换 CSS 类。classList 属性是只读的,但你可以使用 add() 和 remove() 方法修改它。常用方法add(class1, class2, …):在元素中添加一个或多个类名。document.getElementById("myDIV").classList.add("a");remove(class1, class2, …):移除元素中一个或多个类名。docume原创 2020-12-27 20:42:26 · 532 阅读 · 0 评论 -
案例:电商放大镜写法
今天来写常见的放大镜功能,这是各个电商网站经常使用的东西样式 <style> * { margin: 0; padding: 0; } .box { width: 350px; height: 350px; margin: 100px; border: 1px solid #ccc;原创 2020-12-22 07:59:20 · 172 阅读 · 0 评论 -
js正则表达式
正则表达式是一个有规则的表达式,在很多语言中都有正则表达式,主要是用做表单验证的,简单的说就是一个用于查找的通配符正则表达式创建构造函数var regex = new RegExp( 正则表达式字符串[, 匹配模式] );2) 字面量 var regex = /正则表达式/;...原创 2020-12-20 17:50:45 · 299 阅读 · 2 评论 -
js获取元素
文档:一个页面就是一个文档,DOM中使用document表示元素∶页面中的所有标签都是先素,DOM中使用element表示节点∶网页中的所有内容都是节点(标签、属性、文本、注释等),DOM中使用node表示根据ID获取使用getElementByld()方法可以获取带有ID的元素对象。<body> <input type="text" id="inp"> <script> var inp=document.getElementBy.原创 2020-12-11 17:12:25 · 233 阅读 · 0 评论 -
字符串对象
字符串的不可变指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。var str = 'abc ' ;str = "hello";//当重新给str赋值的时候,常量·abc'不会被修改,依然在内存中//重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变/由于字符串的不可变,在大量拼接字符串的时候会有效率问题var str = '";for (var i = o; i < 100000; i++) {str t= i;conso原创 2020-12-06 22:41:59 · 199 阅读 · 0 评论 -
常用数组API以及会不会改变原数组
数组的API是常用的知识点,同时有些面试题也会考比如这个api会不会改变原数组;当然了,我们说这些东西都是js自带的,并不一定适合你的项目,你完全可以自己写一个api覆盖掉它;改变原数组的:shift:将第一个元素删除并且返回删除元素,空即为undefinedunshift:向数组开头添加元素,并返回新的长度pop:删除最后一个并返回删除的元素push:向数组末尾添加元素,并返回新的长度push:向数组末尾添加元素,并返回新的长度...原创 2020-12-05 14:54:48 · 465 阅读 · 0 评论 -
数组与基本使用
数组用于存放多个数据(不限任何类型)创建数组的方法1、var arr=[ ];2、new Array(长度)长度, 数组里面的数据总数,长度一定是一个非负整数属性length属性:数组的长度,会自动变化,值位最大下标 + 1数字字符串属性: 叫做下标,也叫做索引,相当于数组中每个数据的编号,下标从0开始排列连续下标的取值范围: 0 ~ .length - 1。如: var arr=[1,2,3] // 0 1 2对数组的操作增加1、arr[arr.length] =原创 2020-11-30 18:34:27 · 138 阅读 · 0 评论