javascript
Jookerone
这个作者很懒,什么都没留下…
展开
-
找到组件 最近的指定父组件。找到组件 的所有指定子组件
/** * 找到组件 最近的指定父组件 * componentName:指定父组件名 * eventName: 父组件触发事件 * */ Vue.prototype.$dispatch = function(componentName, eventName){ let parent = this.$parent; while(parent){ let name = parent.$options.na.原创 2021-12-15 21:26:09 · 1108 阅读 · 0 评论 -
根据一个 id 返回在树中的父级节点 id 数组
//根据一个 id 返回在树中的父级节点 id 数组 // 入参 tree,id,parentIds //返回:数组,或者 null const parseParentIds = (tree, id, parentIds = [])=>{ if(!tree || !tree.length){ return null } for(const node of tree){ if(node.id === id){.原创 2021-12-14 11:33:11 · 460 阅读 · 0 评论 -
判断是否整数
const isInteger = (value)=> ‘’ +_parseInt(value, 10) === value; //原创 2021-12-10 21:02:18 · 216 阅读 · 0 评论 -
import export
原创 2021-12-10 19:54:00 · 302 阅读 · 0 评论 -
图片增加水印
原创 2021-11-19 18:18:19 · 70 阅读 · 0 评论 -
复制 vue
原创 2021-11-19 18:17:44 · 555 阅读 · 0 评论 -
route占位符
route.param.id原创 2021-11-02 20:27:43 · 732 阅读 · 0 评论 -
es6 知识碎记
1.箭头函数的this向上查找作用域,最后指向foo的this,而调用foo函数的是window对象。如果setTimeout里面的回调是普通函数,则输出id:21 ,因为普通函数是谁调用的,this就指向谁。2.Timer里的this指向timer,因为是new出来的3.4.对象不构成单独的作用域5.6. 解构赋值可以读取对象的原型上的属性; 扩展运算符的解构赋值,只能读取对象自身的属性7.8.9.10.11.1213...原创 2021-10-28 08:58:30 · 90 阅读 · 0 评论 -
小程序 组件
原创 2021-10-27 09:05:34 · 65 阅读 · 0 评论 -
onclick addEventListener
正常的onclick 是冒泡 ,addEventListener 要看第三个参数,如果是true则是捕获机制,如果是false则是冒泡机制,原创 2021-10-26 12:10:08 · 187 阅读 · 0 评论 -
并发发出远程请求。
async function logInOrder(urls) { // 并发读取远程URL const textPromises = urls.map(async url => { const response = await fetch(url); return response.text(); }); // 按次序输出 for (const textPromise of textPromises) { console.log(await textPr原创 2021-10-26 12:09:37 · 90 阅读 · 0 评论 -
http缓存
文章原创 2021-10-25 18:48:31 · 945 阅读 · 0 评论 -
支付宝小程序控制组件的渲染
可以给组件外层加一层v-if ,然后在onFirstAppear中调用函数控制 v-if 引用的变量,为true时就渲染组件了。原创 2021-10-25 15:50:16 · 508 阅读 · 0 评论 -
class 定义的属性和方法区别
1.方法:在类中定义方法,但其实方法还是定义在prototype上的;2.属性:静态属性:class本身的属性class Example { // 新提案 static a = 2;} // 目前可行写法 Example.b = 2;公共属性:被实例共享的属性。class Example{ }; Example.prototype.a = 2;实例属性:classExample{ a = 2; }...原创 2021-10-24 09:39:38 · 385 阅读 · 0 评论 -
给HTML文件设置缓存头
什么时候浏览器会自动在请求头加上Cache-Control:max-age=0在当前页面手动刷新的时候,浏览器会在请求头自动加上 Cache-Control:max-age=0 。而如果是在新标签页去访问是不会加的。所以可能版本上线后,用户访问的还是旧版本。所以咋整访问某个url时,如果这个url对应的资源是可能变化的,那就要在上线时设好缓存头 Cache-Control:max-age=0 ,不要依赖浏览器默认行为...原创 2021-10-21 23:23:00 · 572 阅读 · 0 评论 -
js闭包变量回收问题
js变量回收规则:在js中定义的全局变量是不会被销毁的,因为随时都可能会用到这个变量,所以不能被销毁。具体引用关系的不会被销毁如果一个对象不被引用,那么这个对象就会被回收;如果两个对象互相引用,但是没有被第3个对象所引用,那么这两个互相引用的对象也会被回收。链接...原创 2021-10-21 10:05:47 · 655 阅读 · 0 评论 -
Promise的状态一旦改变,就保持该状态不变
reject()方法的作用,等同于抛出错误。如果 Promise 状态已经变成resolved,再抛出错误是无效的。const promise = new Promise(function(resolve, reject) { resolve('ok'); throw new Error('test');});promise .then(function(value) { console.log(value) }) .catch(function(error) { console原创 2021-10-19 16:02:18 · 856 阅读 · 0 评论 -
无法将“xxx”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次
在命令前添加npx原创 2021-10-15 18:13:58 · 8426 阅读 · 4 评论 -
+转化为数值
在前面加个+,无法转化为数值类型的,结果为NaN原创 2021-10-06 16:11:14 · 97 阅读 · 0 评论 -
canvas beginPath closePath
https://www.cnblogs.com/xuehaoyue/p/6549682.html如果不beginPath, stroke方法会重头开始绘制一次。相当于路径没有断开,而是延续。restore方法会将canvas的context上下文重置到save之前的状态,之后的全无效。background-size:cover–>宽高保持等比例,目的是为了完全覆盖背景区,可能背景图片部分看不见;contain: 宽高保持等比例,目的是将背景图片完全装入背景区,可能背景区部分空白。...原创 2021-10-06 13:15:02 · 146 阅读 · 0 评论 -
宏任务,微任务,eventloop
虽然说JavaScript是单线程语言,但是浏览器不是单线程的。而不同的线程就会对不同的事件进行处理,当对应事件可以执行的时候,对应线程就会将其放入任务队列。js引擎线程:用于解释执行js代码、用户输入、网络请求等;GUI渲染线程:绘制用户界面,与JS主线程互斥(因为js可以操作DOM,进而会影响到GUI的渲染结果);http异步网络请求线程:处理用户的get、post等请求,等返回结果后将回调函数推入到任务队列;定时触发器线程:setInterval、setTimeout等待时间结束后,会把执行函原创 2021-08-21 18:23:38 · 59 阅读 · 0 评论 -
class定义static属性的两种方式
假设当前类:MyClass1.在MyClass的内部写:static myStatic = ’ myStatic’;2.MyClas.myStatic = ’ myStatic’;原创 2021-08-01 18:52:35 · 526 阅读 · 0 评论 -
window.open
如果路径没有http 开头,则会使用网页的域名。否则不会用。比如:你的个人网站域名是http://mysite.com然后window.open(‘http://zjh.com/hello?search=world’) 就是跳转到http://zjh.com/hello?search=world.但是如果window.open(’/hello?search=world‘)就是跳转到http://mysite.com/hello?search=world...原创 2021-08-01 12:34:01 · 699 阅读 · 0 评论 -
sourcetree 出现无效的路径
应该是github 无法访问的问题~ 晚点再试试!原创 2021-06-26 20:11:07 · 699 阅读 · 0 评论 -
js小技巧
1.取一个指定范围的随机数字function shuffle(min,max){ return Math.floor(Math.random() * (max - min + 1) + min) }登录业务:前端和后端服务器不存在跨域时:通过cookie在客户端记录状态、通过session在服务器端记录状态存在跨域时:通过token方式维持状态给png类型图片添加一个background-color属性,可以改变透明部分的颜色...原创 2021-06-16 21:03:13 · 45 阅读 · 0 评论 -
浏览器知识
1.渲染时会把html 、css分别用parser 解析成dom和cssom,然后合并到一起,并计算布局样式成绝对的坐标,生成渲染树,之后把渲染树的内容复制到显存就可以由显卡来完成渲染。每一次渲染流程叫做一帧,浏览器会有一个帧率(比如一秒60帧)来刷新。2.js引擎只会不断执行JS代码,渲染引擎也是只会布局和渲染,他们两个并不知道彼此,该怎么配合呢?答案就是event loop3.宿主环境:JS引擎并不提供event loop,而是浏览器或node提供的...原创 2021-06-14 15:57:33 · 58 阅读 · 0 评论 -
前端面试题
函数本身是一个对象max-age:max-age是HTTP/1.1中,他是指我们的web中的文件被用户访问(请求)后的存活时间,是个相对的值,相对Request_time(请求时间).例如:A.html 用户请求时间是18:00,max-age设置的是600的话,相当18:00+600秒过期,也就是相对18:00的时间后面600秒后过期.默认的max-age是由Expires算出来的.request Header:Cache-Control: max-age = 0.If-None-Mat.原创 2021-06-14 15:56:59 · 64 阅读 · 0 评论 -
audio的事件
canplay :可以播放的时候触发error:网络错误的时候触发timeupdate:播放时,e.target是audio标签,e.target.currentTime是当前播放到哪个时间了,它是一个可读写的属性,就是可以通过修改currentTIme(秒)来控制播放的位置格式化时间function format(time){ time = time | 0; let minute = time / 60 | 0; //或0向下取整 相当于Math.floor() let sec原创 2021-06-04 20:58:24 · 1545 阅读 · 0 评论 -
根据浏览器类型动态写css属性
let elemStyle = document.createElement('div').style;let vendor = (function(){ let transforms = { webkit:'webkitTransform', Moz:'MozTransform', O:'OTransform', ms:'msTransform', standard:'transform' } for(let key in transforms){原创 2021-06-04 10:19:33 · 119 阅读 · 0 评论 -
v-show
v-show 的机制是加载后,根据条件判断是否显示switch 比较用的是全等(非整数 | 0) == Math.floor(非整数)原创 2021-06-02 21:32:52 · 62 阅读 · 0 评论 -
sort升序
//升序 let arr = ['c','j','a']; arr.sort((x,y)=>{ return x.charCodeAt(0) - y.charCodeAt(0) }) console.log(arr);原创 2021-06-01 12:20:26 · 111 阅读 · 0 评论 -
set 数组去重
//利用set来数组去重 let arr = [1,3,3,4]; let set = new Set(arr); // console.log([...set]); console.log(Array.from(new Set(arr)));原创 2021-06-01 11:07:52 · 349 阅读 · 0 评论 -
检查元素是否有className
<div id=box onclick="console.log('hello')" class="hello world">hello</div> <script> function hasClass(el,className){ //开头或空白字符 + className + 空白字符或结尾 let reg = new RegExp('(^|\\s)'+ className + '(\\s|$)'); return reg.test原创 2021-05-29 21:31:54 · 158 阅读 · 0 评论 -
js面试题
typeof 能判断哪些类型1.能识别所有值类型2.识别函数3.判断是否是引用类型(不可再细分)深拷贝 let obj1 = { name:'zjh', age:18, hobbies:['swimming','runniing',{day:'sleep',night:'play phone'}], addr:{ city:'shantou' } } let obj2 = deepClone(obj1); f原创 2021-05-26 12:27:05 · 60 阅读 · 0 评论 -
async await
// function timeout(){// return new Promise((resolve,reject)=>{// setTimeout(()=>{// reject("fail")// // resolve("success")// },1000)// })// }// async function foo(){ //async返回一个promise对象// const s = await timeout(原创 2021-05-22 22:18:39 · 130 阅读 · 0 评论 -
js 日期格式化 正则表达式
export function formatDate(date,fmt){ //date是日期类型对象,fmt是yyyy-MM-dd HH:mm:ss格式的字符串 if(/(y+)/.test(fmt)){ fmt = fmt.replace(RegExp.$1,(date.getFullYear()+'').substr(4-RegExp.$1.length)); } let o = { 'M+':date.getMonth()+1, 'd+':date.getDat原创 2021-05-16 15:59:17 · 506 阅读 · 0 评论 -
padding-top:100% 图片加载时,高度变化不会影响下方的元素
padding-top的值相当于父盒子宽度的100%.image-header position :relative width:100% padding-top:100% img position:absolute top:0 left:0 width:100% height:100%原创 2021-05-14 21:21:41 · 325 阅读 · 0 评论 -
js 宏任务与微任务
优先级 :promise.then > setTimeout原创 2021-05-12 16:46:16 · 48 阅读 · 0 评论 -
多行文字垂直居中
父元素:display:table;table-layout:fixed;包裹文字的子元素:display:table-cell; vertical-align:middle;原创 2021-05-12 12:09:02 · 55 阅读 · 0 评论 -
vue 过渡效果
<transition name="transition-name"> 需要过渡效果的DOM <div id="box">....</div></transition>css样式#box{ opacity:1;}//v-show或v-if为true时添加transiton-name-enter-active, false时添加transiton-name-leave-active.transiton-name-enter-active原创 2021-05-11 22:00:47 · 59 阅读 · 0 评论