![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript
文章平均质量分 53
徕胖
凡事到最后必将皆大欢喜!
展开
-
阻止冒泡和取消事件默认行为
1.阻止冒泡2.取消默认事件preventDefault它是事件对象(Event)的一个方法,作用是取消一个目标元素的默认行为。既然是说默认行为,当然是元素必须有默认行为才能被取消,如果元素本身就没有默认行为,调用当然就无效了...原创 2021-07-26 20:59:41 · 538 阅读 · 0 评论 -
深拷贝和浅拷贝
1.实现深拷贝Js数据类型分为基本数据类型(string,number,boolean,null,undefined,symbol)(又叫值类型)和引用数据类型(object)。基本数据类型的值存放在栈内存中。基本数据类型他们的值被以键值对的形式保存在栈中。引用数据类型的值存放在堆内存中,栈中存放的是值在堆内存中的地址。引用类型只有object一种。但js中除了基本数据类型,万物皆对象,数组,函数,对象都是object类型。与基本类型不同的是,引用类型的值被保存在堆内存中,对象的引用原创 2021-07-25 18:36:36 · 488 阅读 · 0 评论 -
typeof和instanceof,Object.prototype.toString,以及判断是数组还是对象,手写instanceof
1.typeof2.instanceofinstanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上,返回值是一个布尔值。instanceof能否判断基本数据类型?不能3.Object.prototype.toString通常用typeof判断基本数据类型,用instanceof来判断复杂数据类型(如Array,Object,RegExp)。Object.prototype.toString既能判断基本数据类型也能判断复杂数据类型。4.原创 2021-07-25 17:51:03 · 566 阅读 · 0 评论 -
js实现继承的几种方式
原型链继承借用构造函数来继承构造函数+原型链 组合继承寄生组合式继承原型式继承寄生式继承class+extends继承(1)原型链继承核心:创建父类实例对象作为子类原型优点:可以访问父类原型上的方法或属性,实现了方法复用缺点:创建子类实例时,不能传父类的参数(比如name),子类实例共享了父类构造函数的属性值,(2)构造函数继承核心:在子构造函数中调用父构造函数优点:解决了原型继承的缺点 (使用构造函数来继承可以传父类的参数,可以解决子类共享父类构造函数中属性的问题.原创 2021-07-25 16:12:14 · 5630 阅读 · 1 评论 -
script标签以及async和defer属性 (异步加载js代码)
defer(延迟)属性:仅适用于外部脚本(即只有在使用 src 属性时,该属性才有效),规定对脚本执行进行延迟。下载脚本时不阻塞页面的解析执行,直至页面加载解析执行完成后,才开始执行脚本。async(异步)属性:适用于外部脚本(即只有在使用 src 属性时,该属性才有效),规定异步执行脚本。下载时不会阻塞页面的解析执行,下载完成后立刻执行脚本,此时,如果页面没有解析执行完,则会阻塞页面加载解析。(注意:如果同时指定了两个属性,则会遵从async属性而忽略defer属性。)只有一个脚本情况...原创 2021-07-25 09:28:32 · 507 阅读 · 0 评论 -
死锁的分析
原创 2021-07-25 00:50:02 · 86 阅读 · 0 评论 -
{},new Object()和Object.create()区别
Object.create()方法接受两个参数:Object.create(obj,propertiesObject) ;第一个参数obj:必须的,是一个对象,是新创建的对象的原型对象。第二个参数propertiesObject:可选的,是一个对象,是新创建的实例对象上的属性。该对象是一组属性与值,(propertiesObject与Object.defineProperties()的第二个参数一样)...原创 2021-07-24 22:40:02 · 291 阅读 · 0 评论 -
cookie,sesssionStorage,localStorage
cookie,sesssionStorage,localStorage总结sesssionStorage,localStorage的相同点和不同点html5中提供了两种本地存储的方式:localStorage(本地存储)和sessionStorage(会话存储)localStorage和sessionStorage共同特点(本地存储特性):1.数据存储在用户浏览器中,(数据仅在客户端(即浏览器)中保存,不参与和服务器的通信)2.设置、读取方便、甚至页面刷新不丢失数据3.容量大较大、约5M4.原创 2021-07-23 20:29:20 · 240 阅读 · 0 评论 -
js解决回调地狱(promise,generator,async和await)
1.回调地狱没有Promise之前,解决异步都是依赖回调,但执行多个具备前后顺序的异步操作时,就需要在回调当中嵌套回调,也称回调地狱。这种代码的可读性和可维护性都是非常差的,因为嵌套的层级太多。//回调地狱 输出顺序 1 2 3 setTimeout(function(){ console.log('1'); setTimeout(function(){ console.log('2');原创 2021-07-21 17:02:58 · 301 阅读 · 0 评论 -
promise,generator,yield,async和await的使用
1.promise 基本使用方法:Promise实例对象的方法(then,catch,finally)Promise构造函数本身的方法(Promise.all(),Promise.race(),Promise.any())Promise.all中什么时候触发回调?当传入的promise全为resolve时,或者只要有一个是reject时就会触发回调Promise.race中什么时候会触发回调?只要有一个promise有返回结果(不管是resolve还是reject)就会原创 2021-07-21 16:30:47 · 216 阅读 · 0 评论 -
事件循环eventloop以及宏任务和微任务
事件循环:从上到下执行script(整体代码),遇到异步代码时,会将这个事件挂起,继续执行执行栈中的其他同步任务。当被挂起的异步代码执行完后,会将这个异步代码的回调函数加入事件队列中(若这个异步任务为宏任务,则加入宏任务队列。若这个异步任务为微任务,则加入微任务队列。)当script(整体代码)执行完后,会执行微任务队列中所有的微任务。执行完所有的微任务后,然后进行浏览器渲染,再从宏任务队列中找一个宏任务进入执行栈中执行,然后再重复……...原创 2021-07-20 19:39:34 · 237 阅读 · 0 评论 -
new 操作符原理以及手写new
首先创建一个空对象,并继承构造函数的原型对象prototype执行构造函数,执行时传入相应的参数,并将this执行为新实例判断构造函数的返回值,……原创 2021-07-20 16:46:16 · 89 阅读 · 0 评论 -
手写Promisify函数
手写Promisify //分析可得 promisify函数返回一个函数。返回的这个函数,返回值是Promise对象 function promisify(f){ return function(...args){ return new Promise(function(res,rej){ args.push(function(err,data){ .原创 2021-06-20 22:45:45 · 312 阅读 · 2 评论 -
js——promise用法
.1.promise基本用法 <script> const promise =new Promise((resolve,reject)=>{ console.log(1); resolve(5); console.log(2) }).then(val=>{ console.log(val); }); pro原创 2021-06-20 19:41:52 · 1623 阅读 · 1 评论 -
js——浏览器缓存(http缓存)和本地存储
http缓存链接事先代码准备:创建一个http服务在集成终端中,输入node app.js启动服务此时,在浏览器中输入localhost:3000,结果如下新建一个test1.html页面,内容如下现在希望服务器能将这个页面发送过来,所以修改app.js内容此时,在浏览器中输入localhost:3000后,结果如下,可以看出,此时显示的就是index.html页面基于上面的内容,开始讲解强制缓存和协商缓存index.html内容如下此时,如果不修改ap.原创 2021-06-19 00:13:33 · 3833 阅读 · 0 评论 -
JS——generator(生成器)和yield、与iterator接口的关系、Generator实现异步编程
1,B站es6视频原创 2021-06-05 23:38:11 · 2708 阅读 · 2 评论 -
js——Array中reduce方法
reduce方法reduce() 方法接收一个回调函数作为参数,reduce 为数组中的每一个元素依次执行回调函数,回调函数接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。reduce方法的返回值为回调函数最后的返回值 代码示例1:(回调函数中不写return,并且没有initialValue)代码示例2:(回调函数中写return,但没有initialValue)代码示例3:(回调函数中:写return,并且有initialValue.原创 2021-05-28 17:49:37 · 4083 阅读 · 0 评论 -
js——数组扁平化实现方式(超详细!!!)
数组扁平化,就是将一个复杂的嵌套多层的数组,一层一层的转化为层级较少或者只有一层的数组。方式1 使用ES2019中新增的 Array.prototype.flat(参数)方法 //方式1 使用ES2019中新增的 Array.prototype.flat(参数)方法 该方法不会改变原数组,会返回一个新数组 var arr1=[1,2,[2,3],[[4,5]],6] var arr2=[2,5,5] console.log(arr1.flat(In.原创 2021-05-28 17:43:15 · 656 阅读 · 0 评论 -
js——JSON对象用法
JSON是一种按照 JavaScript对象语法的数据格式。JSON全称 JavaScript 对象表示法(JavaScript Object Notation)。原创 2021-05-28 15:17:28 · 113 阅读 · 0 评论 -
js——关键字in和hasOwnPrototype用法
JavaScript中in和hasOwnProperty区别详解hasOwnProperty表示是否有自己的属性。这个方法会查找一个对象是否有某个属性,但是不会去查找它的原型链。原创 2021-05-28 10:18:19 · 297 阅读 · 1 评论 -
vue面试(三)——组件(或实例)生命周期以及父子组件生命周期执行顺序
vue生命周期函数又叫生命周期钩子,是在某个时刻会自动执行的函数vue组件又叫实例,所以将组件生命周期又叫实例生命周期参考链接 (1)创建期间的生命周期函数vue生命周期函数又叫生命周期钩子,是在某个时刻会自动执行的函数vue组件又叫实例,所以将组件生命周期又叫实例生命周期beforeCreate是在vue组件或实例创建完成之前执行。created是在vue组件或实例创建完成之后执行。beforeMount是在模板渲染到页面上之前会执行mounted是在模板渲染到页面完...原创 2021-05-21 14:29:54 · 341 阅读 · 2 评论 -
web开发模式(服务端渲染,客户端渲染(前后端分离)以及如何选择web开发模式)
目前主流的Web开发模式,大致分类两种:(1) 基于服务器端渲染的传统Web开发模式 (SSR Server side rendering服务器端渲染)(2) 基于前后端分离的新型Web开发模式 (CSR Client side rendering客户端渲染)何为渲染?页面上的数据要发生更新,就是渲染。这个工作放在服务器进行就是服务器端渲染,放在浏览器进行就是浏览器端渲染。何为渲染?如果我们只是想显示一堆不变的数据,那么我们直接写一个a.html丢到服务器上让客户端访问就可以了.原创 2021-05-18 10:42:54 · 1037 阅读 · 3 评论 -
html5本地存储——sessionStorage和localStorage
sessionStorage和localStorage数据的存储以及获取,以及两者的区别html5中提供了两种本地存储的方式:localStorage(本地存储)和sessionStorage(会话存储)window.sessionStorage(会话存储):暂时储存,浏览器关闭之后会清除window.localStorage (本地存储):本地储存,浏览器关闭之后依旧不会清除,只能人为删除平时储存的话建议使用sessionStorage;本地存储特性:1.数据存储在用户浏览器中2.设置.原创 2021-05-17 22:32:49 · 1244 阅读 · 0 评论 -
js——iterator,可枚举,for of、for in、foreach
1https://blog.csdn.net/weixin_48337566/article/details/114861343?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242添加链接描述https://www.cnblogs.com/everlose/p/12894300.htmlhttps://blog.csdn.net/qq_30100043/articl原创 2021-05-16 20:42:32 · 525 阅读 · 1 评论 -
js——Set和Map,以及哈希表
1.哈希表参考链接哈希表概述:散列表(Hash table,也叫哈希表),是根据关键值(Key)而直接进行访问的数据结构。也就是说,它通过把关键值key映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数(哈希函数),存放记录的数组叫做散列表。(哈希表一般用数组来存储)向哈希表中存数据:根据数据的key值和哈希函数,得到一个数组下标,这个下标的含义是数据在哈希表中的存放的位置。若发生了冲突,则再根据冲突的处理方法来解决冲突。找到最终存放的位置后,将数据存放进去。在哈希表中查原创 2021-05-16 14:56:44 · 11854 阅读 · 3 评论 -
js中数组Array中sort()函数用法以及原理
注意:sort() 方法用于对数组的元素进行排序。默认排序顺序为按字母升序排序。若想使用数字排序,你必须通过一个函数作为参数来调用。通过函数指定数字是按照升序还是降序排列。sort方法会改变原始数组。数字升序排序数字降序排序js中数组的sort()方法及原理sort方法可以直接调用,不传入任何参数,也可以传入一个比较函数作为参数。如果调用sort方法时没有使用参数,会按默认的排序的方式,即先调用每个数组项的toString(),将数组中元素转成字符串类型,然后按AS...原创 2021-05-15 22:35:45 · 2125 阅读 · 0 评论 -
牛客网在线编程系统(OJ在线编程常见输入输出)javascript语言输入输出相关
在牛客网刷各大厂校招真题的时候,最头疼的就是输入数据的读取和结果的输出。牛客网在线判题使用帮助链接在牛客网刷编程题的时候,编译器提供的是Javascript(v8 6.0.0),在线编程部分前端编程还好,只用在题目给出的函数中补充就行。但我们不知道如何像C/C++这样实现输入,类似于C的scanf 和 C++的cin函数。因为平时JavaScript基本都是函数式编程,就是将程序全都封装在函数里面,然后再调用函数,通过console控制台或者node控制台查看结果。前提是,输入已经指定了。于是乎,牛客网.原创 2021-04-19 20:19:39 · 3758 阅读 · 1 评论 -
javascript总结之原型对象,原型链、(prototype和__proto__,以及constructor)、Function和Object、构造函数可以访问的属性或方法
1.prototype和__proto__,以及constructor切记:prototype是函数对象才会有的属性,__proto__是每一个对象都会有的属性。constructor是prototype对象中的一个属性。原型prototype是什么?原型是一个对象,也称prototype为原型对象。原型对象存在的意义是什么?答:共享方法,节省内存。一般情况下,公共属性放在构造函数里面,公共的方法放在原型对象身上。对象中__proto__对象中__proto__的指向:原创 2021-02-26 16:22:27 · 651 阅读 · 0 评论