js
十二..
微醺缓行
展开
-
JS中轻松遍历对象属性的几种方式
自身可枚举属性Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致 。如果对象的键-值都不可枚举,那么将返回由键组成的数组。这是合理的,因为大多数时候只需要关注对象自身的属性。来看看一个对象拥有自身和继承属性的例子,Object.keys()只返回自己的属性键:let simpleCo...转载 2020-05-07 18:53:05 · 1132 阅读 · 0 评论 -
Promise控制并发
题目是这样的:有 8 个图片资源的 url,已经存储在数组 urls 中(即urls = [‘http://example.com/1.jpg’, …., ‘http://example.com/8.jpg’]),而且已经有一个函数 function loadImg,输入一个 url 链接,返回一个 Promise,该 Promise 在图片下载完成的时候 resolve,下载失败则 rejec...转载 2020-03-25 09:57:56 · 827 阅读 · 0 评论 -
vue 的diff算法
vue的diff位于patch.js文件中,复杂度为O(n)。 听大神说了解diff过程可以让我们更高效的使用框架,工作和女朋友都更加好找了,我们赶快了解哈~。 了解diff过程,我们先从虚拟dom开始。...转载 2020-03-07 15:19:21 · 209 阅读 · 0 评论 -
前端面试重要问题总结(前端100问小结)(十)
第 91 题:介绍下 HTTPS 中间人攻击题目讨论https协议由 http + ssl 协议构成,具体的链接过程可参考SSL或TLS握手的概述中间人攻击过程如下:服务器向客户端发送公钥。攻击者截获公钥,保留在自己手上。然后攻击者自己生成一个【伪造的】公钥,发给客户端。客户端收到伪造的公钥后,生成加密hash值发给服务器。攻击者获得加密hash值,用自己的私钥解密获得真秘钥。同...转载 2020-03-06 17:03:59 · 556 阅读 · 0 评论 -
for in和for of
先说结论:1.推荐在循环对象属性的时候,使用for…in,在遍历数组的时候的时候使用for…of。2.for…in循环出的是key,for…of循环出的是value3.注意,for…of是ES6新引入的特性。修复了ES5引入的for…in的不足4.for…of不能循环普通的对象,需要通过和Object.keys()搭配使用假设我们要遍历一个数组的valuelet aArray = [‘a...转载 2020-03-06 11:26:13 · 143 阅读 · 0 评论 -
前端面试重要问题总结(前端100问小结)(九)
第 81 题:打印出 1 - 10000 之间的所有对称数例如:121、1331 等[...Array(10000).keys()].filter((x) => { return x.toString().length > 1 && x === Number(x.toString().split('').reverse().join('')) })第...转载 2020-03-05 18:11:31 · 219 阅读 · 0 评论 -
前端面试重要问题总结(前端100问小结)(八)
第 71 题: 实现一个字符串匹配算法,从长度为 n 的字符串 S 中,查找是否存在字符串 T,T 的长度是 m,若存在返回所在位置。题目讨论slice左闭右开const find = (S, T) => { if (S.length < T.length) return -1 for (let i = 0; i < S.length; i++) { i...转载 2020-03-04 17:24:47 · 164 阅读 · 0 评论 -
前端面试重要问题总结(前端100问小结)(七)
第 61 题:介绍下如何实现 token 加密转载 2020-03-02 17:51:33 · 221 阅读 · 0 评论 -
前端面试重要问题总结(前端100问小结)(六)
第 51 题:Vue 的响应式原理中 Object.defineProperty 有什么缺陷?为什么在 Vue3.0 采用了 Proxy,抛弃了 Object.defineProperty?转载 2020-03-01 16:55:51 · 169 阅读 · 0 评论 -
前端面试重要问题总结(前端100问小结)(五)
第 41 题:下面代码输出什么var a = 10;(function () { console.log(a) a = 5 console.log(window.a) var a = 20; console.log(a)})()转载 2020-03-01 12:43:00 · 241 阅读 · 0 评论 -
移动端网页要点
移动端网页最大的特点是什么?自适应不同尺寸的屏幕!高大上的叫法:响应式!知道了自适应网页怎么做岂不是能很好解决问题了?那么自适应网页怎么做呢?网上关于这方面的文章有很多,我简单的整理一下。一、 HTML设置在head中加入meta标签<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum...转载 2020-02-29 11:39:59 · 287 阅读 · 0 评论 -
前端面试重要问题总结(前端100问小结)(三)
第 21 题:有以下 3 个判断数组的方法,请分别介绍它们之间的区别和优劣Object.prototype.toString.call() 、 instanceof 以及 Array.isArray()题目讨论Object.prototype.toString.call()每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [O...转载 2020-02-26 19:15:31 · 269 阅读 · 0 评论 -
前端面试重要问题总结(前端100问小结)(二)
;;体育一转载 2020-02-24 22:09:55 · 385 阅读 · 0 评论 -
重写 toString()和Object.prototype.toString()的不同
首先记住undefined , null没有toString()方法.大家都知道toString()是用来返回相对应类型值的字符串格式.当我们调用toString()返回发现结果并非如此,当我们对Number,String,Boolean,Array类型 调用toString()方法时,会返回想对应的字符串.var arr= [1,2]arr.toString()//"1,2"va...转载 2020-02-23 16:14:23 · 210 阅读 · 0 评论 -
前端面试重要问题总结(前端100问小结)(一)
第一题:React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?部分讨论都是基于没有key的情况diff速度会更快。确实,这种观点并没有错。没有绑定key的情况下,并且在遍历模板简单的情况下,会导致虚拟新旧节点对比更快,节点也会复用。而这种复用是就地复用,一种鸭子辩型的复用。以下为简单的例子:<div id="app"> <div v-for="i...转载 2020-02-21 19:50:23 · 339 阅读 · 0 评论 -
js数组方法 改变原数组和不改变原数组的方法
改变原数组:pop():删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不 改变数组,并返回 undefined 值。arrayObject.pop()*push():*push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组,arrayObj...转载 2020-02-20 16:52:25 · 626 阅读 · 0 评论 -
JavaScript 的 Array.prototype.sort 排序算法(含排序算法链接)
深入浅出 JavaScript 的 Array.prototype.sort 排序算法1、找出 Array.prototype.sort 使用的什么排序算法2、用一种直观的方式展示 Array.prototype.sort 的时间复杂度,看看它有多快?Array.prototype.sort 各浏览器的算法实现ECMAScript 5.1ECMAScript 6.0ECMAScript...转载 2020-02-16 16:09:51 · 489 阅读 · 0 评论 -
剑指offer算法篇(javascript)(下)number[41-67]
四十一、和为S的连续正数序列题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输...原创 2020-02-05 13:41:44 · 198 阅读 · 0 评论 -
剑指offer算法篇(javascript)(上)number[1-40]
时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有的时候时间和空间却又是「鱼和熊掌」,不可兼得的,那么我们就需要从中去取一个平衡点。时间复杂度:我们想要知道一个算法的「时间复杂度」,很多人首先想到的的方法就是把这个算法...原创 2020-01-15 21:48:02 · 340 阅读 · 0 评论 -
AST抽象语法树
JS之ASTJavascript就像一台精妙运作的机器,我们可以用它来完成一切天马行空的构思。我们对javascript生态了如指掌,却常忽视javascript本身。这台机器,究竟是哪些零部件在支持着它运行?AST在日常业务中也许很难涉及到,但当你不止于想做一个工程师,而想做工程师的工程师,写出vue、react之类的大型框架,或类似webpack、vue-cli前端自动化的工具,或者有批...转载 2020-01-11 14:10:02 · 289 阅读 · 0 评论 -
js对象的访问器属性和数据属性
JavaScript 数据属性和访问器属性var obj = {name:"percy"};console.log(obj.name); // percyobj.name = "zyj";console.log(obj.name); // zyj// 这里借 Math 对象来举例// 首先说明一下, Math 对象和上面定义的 obj 对象都只是 Object 对象的一个...转载 2020-01-10 21:13:27 · 709 阅读 · 0 评论 -
js继承方法分析(原型与原型链)
js继承方法分析原型链继承function SuperType() { this.property = true;}SuperType.prototype.getSuperValue = function() { return this.property;}function SubType() { this.subproperty = false;}...转载 2020-01-10 17:13:25 · 99 阅读 · 0 评论