
javascript
文章平均质量分 53
Saucey_6
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
js实现sleep的方式
使用promisefunction sleep(time) { return new Promise(resolve => { setTimeout(resolve, time) } )}使用:sleep(time).then(()=>{console.log(time, '时间后进行操作')})原创 2021-01-24 16:51:38 · 898 阅读 · 1 评论 -
发布订阅者模式
使用售楼处与买楼的一个例子太好理解了:eg: 买房的人(订阅者)和售楼部(发布者): 在房子开售的时候,售楼部发布可以买房的信息,买房的人收到可以买房的信息。发布-订阅模式的实现思路:1.首先确定好发布者2.然后给发布者一个缓存列表(订阅者集合),用于存放回调函数以便通知订阅者。3.发布消息的时候,发布者遍历缓存列表,依次触发里面存放的订阅者回调函数。代码:let event = { clientList: [], listen: function (key, fn)原创 2020-07-17 16:28:19 · 462 阅读 · 0 评论 -
Object.seal()和Object.freeze()
// Object.seal()封闭一个对象,阻止添加任何属性,将现有属性标记为不可配置对于当前属性如果之前是可写的就可以改变// Object.freeze()冻结的对象中的现有属性值是不可变的。let obj = { prop: function () { }, foo: 'bar'}// 对象中属性信息的查询console.log(Object.getOwnPropertyDescriptor(obj,'foo'))// 可读Object.freeze(obj)原创 2020-07-14 15:06:34 · 324 阅读 · 0 评论 -
617. 合并二叉树
题目:题解:思路:(1)递归 (2)対树进行先序遍历,置null的节点为0,两个数进行相加代码://递归var mergeTrees = function (t1, t2) { if (t1 === null) return t2; if (t2 === null) return t1; t1.val += t2.val; t1.left = mer...原创 2019-03-15 10:44:11 · 193 阅读 · 0 评论 -
563. 二叉树的坡度
题目:题解:思路:递归方法,主要确定递归结束条件代码:var findTilt = function (root) { let start = 0 mutation(root) return start function mutation(root) { if (root == null) { return 0 ...原创 2019-03-14 10:00:05 · 200 阅读 · 1 评论 -
动态import
eg:element.addEventListener('click',async()=>{ const module=await import('./api-scripts/button-click.js') module.clickEvent()})原创 2019-03-05 14:30:15 · 852 阅读 · 0 评论 -
[]==![]
为什么[]==![]最终的运行结果为true,内部发生了怎样的转换!运算符优先级比==高,所以先运算![],得到false.false在运算中会强制转换为0.[]强制转换为原始类型为“”。“”会强制转换为0。两侧都是number类型为0,所以0==0为true。...原创 2019-02-25 11:17:02 · 2071 阅读 · 0 评论 -
instanceof到底是怎样判断引用数据类型的!
拖延症。。。。得治啊!(才开始慢慢总结秋招中遇到的问题)问题是这样的:判断JavaScript数据类型的方法:(好了,那也就写一下咯)最常见的:typeof判断,但是它的缺陷是,返回的类型都是字符串形式typeof null ===object,它不能判断Array类型,判断出的数组类型是Object。在已知是对象类型时:instanceof那么,问题也就来了...原创 2018-11-13 16:59:40 · 1735 阅读 · 0 评论 -
关于parseInt()
先看一个题目:['1', '2', '3'].map(parseInt)上面题目的输出结果是:[1,NaN,NaN]这是为什么呢?parseInt函数有两个参数语法:parseInt(string, radix)string:要被解析的子符串(必需的)radix:可选参数(所以,我们一般不注意它),表示要解析的数字的基数,该值介于2~36之间。默认为10,如果该参数小于2或者大于...原创 2018-11-13 12:36:07 · 1063 阅读 · 1 评论 -
572. 另一个树的子树
题目:思路:递归代码:var isSubtree = function (s, t) { if (!s) return false if (isSub(s, t)) return true return isSubtree(s.left, t) || isSubtree(s.right, t) function isSub(treeS, treeT) {...原创 2019-03-15 18:18:05 · 112 阅读 · 0 评论 -
前端面试手写代码
贴一个链接:https://www.imooc.com/article/23902原创 2019-03-12 10:30:09 · 775 阅读 · 0 评论 -
655. 输出二叉树
题目:题解:思路: 我们发现输出的数组的行数就是树的高度,列数就是树的高度的幂次方-1.求出树的高度利用二分法将节点值插入。代码:var printTree = function (root) { if (root === null) { return []; } let n = treeTop(root); let col ...原创 2019-03-21 11:51:16 · 342 阅读 · 0 评论 -
102. 二叉树的层次遍历
题目:题解:思路:递归,追踪输的层次。代码:var levelOrder = function (root) { var res = [] let index = 0; travel(root, index) function travel(roots, index) { if (roots) { if (!res...原创 2019-03-21 11:54:39 · 256 阅读 · 0 评论 -
100. 相同的树
题目:题解:递归(下次题目保证不用递归来写)代码:var isSameTree = function (p, q) { if (p === null && q === null) { return true } if ((p === null && q !== null) || (p !== null &&...原创 2019-03-18 10:20:17 · 134 阅读 · 0 评论 -
101. 对称二叉树
题目:题解:代码:var isSymmetric = function (root) { return dfs(root, root) function dfs(p, q) { if (p == null && q == null) return true if (p == null || q == null) return...原创 2019-03-22 11:13:25 · 133 阅读 · 0 评论 -
654. 最大二叉树
题目:题解:思路:使用递归,看到这个题的时候,我第一反应就是给出先序和中序遍历序列,构造二叉树,嗯啊,就是使用这个思路走的。虽然复杂度很高,但是还是很快跑出来了。代码:var constructMaximumBinaryTree = function (nums) { if (nums.length === 0) { return null } l...原创 2019-03-19 10:05:14 · 176 阅读 · 0 评论 -
199. 二叉树的右视图
题目:题解:思路:递归,树的深度遍历代码:var rightSideView = function (root) { let res = []; let arr = []; dfs(root, 1) return res; function dfs(r, h) { //主要在这,递归结束条件 if (r ===...原创 2019-03-28 12:24:29 · 165 阅读 · 0 评论 -
节流和防抖
节流和防抖作用:均是为节约计算机资源而生,也就是归属于优化方面原理:均使用setTimeout来存放待执行的函数,很方便的利用它的延时机制来确定合适的函数触发时机。节流定义:指定时间间隔内只能执行一次任务场景:懒加载图片加载的时候,scroll滚动条的判断时机实现:function throttle(fn, interval) { let canRun = true;...原创 2018-10-19 14:21:19 · 181 阅读 · 0 评论 -
ajax的封装
我!要!被!这!玩意!坑死!了function ajax(url,type,param,async,header){ return new Promise(function (resolve,reject) { let xhr=null if(window.XMLHttpRequest){ xhr = new XMLHttpReq...原创 2018-09-25 13:36:45 · 181 阅读 · 0 评论 -
深拷贝和浅拷贝实现方式
JSON方法实现//_tmp和result是相互独立的,没有任何联系,有各自的存储空间。let deepClone = function (obj) { let _tmp = JSON.stringify(obj);//将对象转换为json字符串形式 let result = JSON.parse(_tmp);//将转换而来的字符串转换为原生js对象 return...原创 2018-05-05 15:37:21 · 61316 阅读 · 14 评论 -
关于for...in和for..of
潜意识认为两个差不了多少的,今天忽然发现相差还挺多的。(1)for…in…let arr=["weiqiujuan","nihao",7,[12,14]];arr.add = 10;//添加的属性;function f(arr) { for (let item in arr) { console.log(item); }}f(arr);//0...原创 2018-04-07 16:40:03 · 189 阅读 · 0 评论 -
原型与面向对象(1)
1. 原型虽是定义对象的一种方式,但其本质依然是函数特征。 2.使用原型所定义的属性和功能都会自动应用到对象的实例上。一旦定义,原型的属性就会变成实例化对象的属性。 3.js原型的主要用途是使用一种类风格的面向对象和继承技术进行编码。1. 对象化实例:1.原型作为对象的概览 function Ninja(){ this.swing...原创 2018-03-17 18:17:59 · 168 阅读 · 0 评论 -
将函数视为对象(javascript忍者第四章)
在js中,函数可以有属性和方法,并且可以被调用。所以其特征之一就是,将函数作为第一型对象。let obj={};let fn=function(){};//将函数赋值给对象的一个属性,从而创建一个方法。1.函数存储 1.我们创建一个对象,并且复制给store变量,该对象有两个数据属性:一个用于存储下一个可用的id,另一个cache用于存储函数,函数时通过add()方法将其...原创 2018-03-17 12:18:13 · 260 阅读 · 0 评论 -
同源策略,跨域问题
同源策略:1.源:由协议,域名,端口号组合而成。2,同源:即地址中的协议,域名和端口号均相同。3.同源策略:同源策略是浏览器的一个安全功能,不同源的客户端在没有明确授权的情况下,不能读写对方的资源。4.不同源:地址中的协议,域名或者端口,任意一个不同,都称其不同源。5.受到同源限制:无法读取不同的Cookie,localStroage和indexDB.无法获取不同源的D...原创 2018-03-16 11:18:39 · 375 阅读 · 0 评论 -
Cookie,localStorage,sessionStorage
webstoragewebstorage是本地存储,存储在客户端,包括localStorage和seesionStorage.1.localStorage 生命周期是永久的,意味着除非用户显示在浏览器提供的UI上清楚信息,否则一直存在。仅在浏览器中保存,不参与和服务器的通信。2.sessionStorage 仅在当前会话下有效,关闭页面或浏览器后被清除。仅在浏...原创 2018-03-14 16:53:49 · 234 阅读 · 0 评论 -
Webpack处理跨域问题
项目预计所有功能都实现啦,GitHub地址如果有什么功能问题,提出来哈。 建议先注册,如果觉得注册麻烦就直接登录哈,登录名:微笑(hhh,我也不知道为啥会注册成这样的)密码:123456接下来几篇可能就是就项目中遇到的问题,统一记录一下。webpack中处理跨域问题webpack代理应用的一个插件:webpack-dev-server,内置了http-procy-mid...原创 2018-06-29 18:27:55 · 4025 阅读 · 0 评论 -
setInterval和setTimeout
在项目的支付模块中,最后选用的是支付宝二维码支付方式,增添的一个算是比较有技术含量的东西,就是采用轮询的方式,监听订单状态,对二维码进行刷新。 代码如下: 这里使用了setInterval,但是有点问题,目前也没有用更好的方法来更换它。 我们可以从控制台看出,每隔五秒就会进行一次刷新,相应的发起一次请求,试想,如果一直请求,会不会造成崩溃~,当然的!!! setInterval...原创 2018-07-03 12:56:47 · 234 阅读 · 0 评论 -
LocalStorage-JavaScript-Challenge
效果图:实现思路:body部分:<div class="wrapper"> <h2>Local Tapas</h2> <ul class="plates"> <li>Loading Tapas...</li> </ul&原创 2018-07-10 15:56:25 · 481 阅读 · 0 评论 -
填坑填坑---------
填一下坑!!!关于let和var 先看两组代码:if (false) { var i = 0;}alert(i);//undefind if (false) { let i = 0;}alert(i);// Uncaught ReferenceError: i is not defined关于深克隆我在这再写一遍的原因就是觉得挂的遗憾!!! ...原创 2018-08-28 21:40:00 · 947 阅读 · 1 评论 -
懒加载,预加载
一.懒加载 1.what: 延迟加载,一种很好的优化网页性能方式。可视区域外的东西不会加载,减少服务器的负载。适用图片很多,页面很长的电商网站。 2.why: 1.提升用户体验:因为一些图片较多的网站,如果一次性加载,用户看着白页面,等待时间一久,用户体验极差。 2.减少无效资源的加载:有时候用户只需浏览到一部分,这样的话减少服务器的压力和流量,减少...原创 2018-09-06 14:03:38 · 240 阅读 · 0 评论 -
arguments......
先看一段代码:function diTui(n) { if(n===1){ return n } return diTui(n-1)*n}var test=diTui;test=undefined; test(5);问,这段代码可以有效执行吗? 答:不可以,在diTui被赋值为undefined的时候,它就已经失效了其实是不对的,他...原创 2018-09-16 23:26:50 · 289 阅读 · 0 评论 -
不引入第三个变量,交换两个值
在不引入第三个变量的情况下交换两个值var a = 3, b = 2;//1.使用解构赋值 [a,b]=[b,a]; //2.运算解决(用除法也可以)a=a+b;b=a-b;a=a-b;//3.数组解决a=[b,b=a][0];console.log(a,b);...原创 2018-09-14 15:20:57 · 486 阅读 · 0 评论 -
数组去重。。。。
数组去重两种思路:1.在原有数组基础上进行去重2.申请新的数组进行去重操作原有数组上进行操作:es6 set方法去重function unique(arr){ return Array.from(new Set(arr))}splice直接去重function unique2(arr){ for(let i=0;i&lt;arr.length;i++)...原创 2018-09-25 12:46:39 · 168 阅读 · 0 评论 -
用原生js实现简单的分页
用原生js实现的一个简单的分页插件。What :上图吧:em…没错,它就是长这样。类似于各种页面搜索结果页的底部部分。 总共分为两个部分,一个分页展示部分,一个查询部分。分页展示部分可划分为上一页,下一页导航操作部分和页面1,2,3直接操作部分。查询部分就是我们只需要输入所要查询的页面数字,即实现跳转到指定页面。How:主要实现的是,当我们要切换到某个页码时...原创 2018-05-18 21:40:25 · 2739 阅读 · 0 评论