js基础分类
文章平均质量分 80
js基础分类
Python User
这个作者很懒,什么都没留下…
展开
-
前端generator的使用
Generator函数就是一个封装的异步任务,或者说是异步任务的容器,异步操作需要暂停的地方,都用yield语句。Generator函数的特征:function 关键字与函数名之间有一个*号;Generator函数内部使用yield表达式,定义内部的不同状态;Generator函数调用不像普通函数那样直接调用,要想函数执行必须调用遍历器对象的next方法,也就是说想要执行函数就需要使用next方法,调用一次next方法执行一次yield表达式,直到执行完yield表达式。function* g原创 2020-12-28 17:19:28 · 272 阅读 · 0 评论 -
前端cookie的使用
主要使用 document.cookie()escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。新增一个cookie:document.cookie = "name=xxx;age=22;expires=Thu, 01 Jan 1970 00:00:00 GMT"更改一个cookie:document.cookie = "name=yyy;age=33;expires=Thu, 01 Jan 1970 00:00:00 GMT"删除一个cookie: 原理是设置原创 2020-12-27 19:04:50 · 158 阅读 · 1 评论 -
前端实现一个websocket
websocket 是h5中新增的协议,面向长连接,用于服务器和本地保持通讯,在聊天或者大数据实时响应的时候用的到;前端实现一个websocket: // ws://localhost:7001/show 此为通信地址 var ws = new WebSocket("ws://localhost:7001/show"); // WebSocket有以下4个方法: //连接发生错误的回调方法 websocket.onerror = function ()原创 2020-12-27 16:43:03 · 572 阅读 · 1 评论 -
js多线程的方法 webwork
JS为我们提供了一个Worker的类,它的作用就是为了解决阻塞的现象。当我们使用这个类的时候,它就会向浏览器申请一个新的线程。这个线程就用来单独执行一个js文件;主线程接受: var worker = new Worker(js文件路径); //postMessage(msg); //postMessage方法把在新线程执行的结果发送到浏览器的js引擎线程里 worker.onmessage = function(){ //获取在新线程中执行的js文件发送的数据 用event.data接收数据原创 2020-12-26 21:21:37 · 425 阅读 · 0 评论 -
前端常见的跨域方式以及解决办法,未完待续。。。
前端厂家你的跨域方式为:CORS,JSONP,反向代理;CORS跨域:CORS解决跨域的一个关键点就是服务器,只要服务器实现了CORS接口就可以实现跨域,直接让后台人员设置就好,前端照常请求;“Access-Control-Allow-Origin:*”JSONP跨域:动态创建script标签,然后利用script的src 不受同源策略约束来跨域获取数据,主要就是通过script标签来请求数据;JSONP由两部分组成:回调函数 和 数据,这个回调函数一定要告诉后端让后端来将实参写进去;回调函数就是原创 2020-12-21 19:44:30 · 88 阅读 · 0 评论 -
js 内存泄露和垃圾回收机制
什么是内存泄漏?程序的运行需要内存,只要程序提出要求,操作系统或者运行是就必须供给内存。对于持续运行的服务进程,必须及时释放内存,否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。不再用到的内存,没有及时释放,就叫做内存泄漏。为了解决内存泄漏的问题,这才有了垃圾回收机制。js垃圾回收机制解决内存泄漏的问题,会定期(周期性)找出那些不再用到的内存(变量),然后释放其内存。常见的垃圾回收机制办法标记清除,引用计数标记清除: js垃圾回收机制会给所有的变量添加一个标记,除了在私有环境原创 2020-12-18 22:29:54 · 94 阅读 · 1 评论 -
js 中 作用域和作用域链的理解
什么是作用域?js代码在运行的时候,浏览器会给js提供执行的环境,这个环境叫作用域也叫栈内存,离开作用域代码就是一堆字符串不能执行,所以作用域也可以理解为变量和函数访问的范围;作用域分为: 全局作用域,局部作用域,ES6新增块级作用域;私有作用域里面的变量,如果没有关键字修饰的话,他就不是局部变量,会影响全局变量;这时他会向上级查找,如果没有就向上级的上级查找,一直查找到全局变量的位置,管这种查找机制叫做作用域链一般情况下,当函数执行完了之后,私有作用域就会释放,私有作用域中的值也会释放;但是,特原创 2020-12-18 18:48:41 · 95 阅读 · 3 评论 -
ES6中箭头函数的一些常见问题
转载来源:https://www.jianshu.com/p/a416cb02e4a2转载 2020-12-17 23:01:39 · 123 阅读 · 0 评论 -
js中 const var let 的区别,什么是块级作用域?
一句话:块级作用域就是在 {} 中, if for 等条件判断中;const :一旦定义了就不能改变了;var:需要初始化,他的值后面也可以改变;let:在块级作用域中定义,对外部无影响;那为什么有了var 还需要let?之所以现在用let声明变量,是因为var声明的变量的作用域都是window下全局的,这样会污染全局,所以才有了let,不知道是es5还是6新语法...原创 2020-12-17 22:57:40 · 96 阅读 · 0 评论 -
JS函数的防抖和节流
为什么要有防抖和节流?为了解决当用户点击请求过快的时候,服务器来不及相应,造成延迟卡死的情况;防抖 或 节流 : 限制函数的执行次数;防抖防抖:函数在n 秒内只执行一次,如果在n秒内又触发执行,则重新计算函数执行时间;简而言之就是在多秒内触发多次请求,之执行最后一次操作防抖特点:延迟----不断刷新定时器防抖缺点:一直点击,可能一直得不到触发;fn是要执行的函数function fangDou(fn, time) { let times = null; return function(原创 2020-12-17 18:16:20 · 125 阅读 · 1 评论 -
js的数据类型,深拷贝和浅拷贝的原理,loda实现一个深拷贝
js的数据类型分为:简单类型 和 复杂类型;简单类型:string, number, null, undefined, Symbol复杂数据类型:function, array, object, Date, Math, 正则简单数据类型是存储在栈中,复杂数据类型存储在 堆中;堆的空间比栈的空间大;简单数据类拷贝是在栈中开辟了一个空间,地址不一样;复杂的数据类型拷贝的时候是在堆中的,只是在栈中开辟了两个空间去指向堆,两个的地址是一样的,所以一个改变的时候另外一个也会改变;假如要是简单数据类原创 2020-12-16 17:48:41 · 159 阅读 · 0 评论 -
js 数组去重
1,ES6 使用 new Set(arr)2,使用indexOf,新建一个空数组进行push,然后indexOf判断3,双层for循环,判断是否相等,如果相等则splice掉原创 2020-12-16 16:33:21 · 167 阅读 · 0 评论 -
js 数组,对象 和 字符串 常用方法
https://www.cnblogs.com/catherLee/p/9152336.html在ES6 中新增:fill 表示替换, fill(index, 1, 2) 从第一个到第二个替换成indexforeach() map()......原创 2020-12-16 16:25:05 · 127 阅读 · 0 评论 -
前端中的事件流和事件委托
事件流:描述事件发生的顺序;三个阶段:事件捕获目标阶段冒泡阶段什么是冒泡?冒泡是从下往上执行的,比如有个子事件和父事件,点击子事件后触发父事件,浏览器是默认事件冒泡的如何阻止冒泡?// 在代码中添加event.stopPropagation();什么是默认行为比如说一个a 标签,有个href的链接,点击之后就会默认的进行跳转;事件委托就是不在事件当前的dom上进行事件,而是在父级进行事件监听,通过事件冒泡来处罚子事件最常见的就是往ul 上绑定事件来触发 li...原创 2020-12-16 15:47:45 · 664 阅读 · 0 评论 -
async ,await,promise 的使用
async+await 就相当于 promise then的一个语法糖,主要是解决then.then这样的回调嵌套async 只是用来修饰函数的,修饰函数后就可以使用await了;await 后面跟 返回promise对对象的这么一个函数,添加await就相当于把promise运行了;await只能在async中使用,他不能获取reject异常只能通过 try-catch的方式获取;await XXX 相当于 XXX = new promise() XXX.then() 相当于解决了回调地狱;原创 2020-12-16 15:29:53 · 444 阅读 · 0 评论 -
js实现继承的5种方式,以及es6的继承方式
先写一个js的父类function father(name) { this.name = name this.def = function () { console.log('this is father!') }}再写一个js 的子类function son (age) { this.age = age}原型链的继承方式 son.prototype = new father() var sons = new son() // 缺点:无法向父类构造函数传参,继承单一,原型属原创 2020-12-15 00:35:17 · 247 阅读 · 0 评论 -
js中 call(),apply(),bind() 区别?
call,apply,bind 都是执行构造函数并且指定this的执行;不同点就是:call: 里面的参数有多少个写多少个; a.call(this, a, b, c)apply:里面的参数需要都写到一个数组中去;a.apply(this,[a, b, c])bind:需要有个调用;var tmp = a.bind(this, a, b, c);tmp() // 调用...原创 2020-12-14 23:47:50 · 96 阅读 · 0 评论 -
Promise的理解和使用,以及为什么要有Promise
要了解Promise 就要首先了解同步和异步的概念:JavaScript是单线程语言,在执行任务的时候,会先执行第一个任务再执行第二个任务,假如第一个任务是个耗时的任务那么第二个任务就一直阻塞不能执行,那么这个时候就需要异步来处理这个操作;同步:主线程上排队执行的任务,只有前一个任务执行完毕,才能继续执行下一个任务;异步:不进入主线程,而进入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程;常见的异步操作代码:function ee (callBack) {原创 2020-11-27 00:57:03 · 2482 阅读 · 0 评论 -
forEach(),filter(),map(),every(),some() 遍历之间的区别
try { /* forEach */ let a = [1, 2, 3, 4, 5, 6]; // forEach() 不会返回新的数组,而是在原数组的基础上改变数组,可以用于数组的修改 a.forEach((num, index, a) => { // 三个参数分别为:子元素,索引,原数组 a[index] = num + 1 }) console.log(a) // [2,3,4,5,6,7] /*.原创 2020-11-04 16:04:32 · 284 阅读 · 0 评论 -
JavaScript类型转换
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>数据类型</title></head><body> <script> // 转换成字符串类型 var num = 12; console.log(num); console.log(num.toString()); // 转原创 2020-06-27 17:08:38 · 91 阅读 · 0 评论 -
JavaScript创建类的几种方法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>类和对象</title></head><body> <script> // 第一种创建对象的方法 var dog = { name: 'dog', age: 2, color: 'black', eat: functi原创 2020-06-18 22:35:30 · 292 阅读 · 0 评论 -
JavaScript在母板div的基础上添加新的标签,延时函数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>JavaScript练习</title></head><body> <div id="map" style="width: 800px; height: 600px; background-color: lightgray; "></div>原创 2020-06-18 17:02:47 · 129 阅读 · 0 评论 -
JavaScript中bind函数,键盘绑定事件
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>JavaScript练习</title></head><body> <script> var a = 123; function fn(){ console.log(this.a); } fn(); // bind相当于是给原创 2020-06-18 16:29:18 · 367 阅读 · 0 评论 -
JavaScript中自调用函数的相关问题
在JavaScript的自调用函数中需要注意:1,连续的两个自调用函数不能没有‘;’号2,在自调用函数中里面的类或者函数都不能被外面所访问,如果想访问就得用window.nn = nn的方式3,最好将‘;’号写在自调用函数刚开始的地方<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>JavaScript练习</title></h原创 2020-06-18 16:09:32 · 251 阅读 · 0 评论 -
JavaScript函数分类
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>函数</title></head><body> <script> // 函数举例 1 命名函数 function def(a, b){ var c = a + b; console.log(arguments) //arguments原创 2020-06-18 16:06:01 · 155 阅读 · 0 评论 -
JavaScript贪吃蛇游戏
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>贪吃蛇游戏</title></head><body> <div id="map" style="width: 800px; height: 600px; background-color: lightgray; "></div> <s原创 2020-06-18 15:42:00 · 197 阅读 · 0 评论