- 博客(18)
- 收藏
- 关注
原创 对象指针问题
let a = {n:1}let b = a/** * 1. a.x 是从原有的对象里重新声明了一个x属性此时为undefined * 2. 赋值运行符从右往左执行,首先声明了一个新对象为 {n:2}, 并把新对象指针赋值给 a 此时原有的对象仍然未b变量持有 * 3. 赋值a.x 就是给原有对象 的 x属性赋值了 一个 新对象的指针 */a.x = a = {n:2} console.log(a); // {n:2}console.log(b); // {n:1,x:{n:2}}
2021-07-21 10:19:42
184
原创 如何限制其他iframe加载自己的网站
解决方案:一、设置http请求头的X-Frame-Options:X-Frame-Options可以设置三个值1、DENY 如果页面包含在框架中,则阻止呈现页面2、SAMEORIGIN 与上面相同,除非页面与顶级框架集所有者属于同一域3、ALLOW-FROM uri 页面只能被制定的uri嵌入到iframe 或 frame中node 做中间层配置引入helmet 第三方node库 https://www.npmjs.com/package/helmet引入方式: npm install
2021-07-19 10:47:54
1579
原创 JS实现一个带并发限制的异步调度器Scheduler,保证同时运行的任务最多有两个。完善代码中Scheduler类,使得以下程序能正确输出
字节跳动前端面试题/** * 题目: JS实现一个带并发限制的异步调度器Scheduler,保证同时运行的任务最多有两个。完善代码中Scheduler类,使得以下程序能正确输出 * 条件: 只能修改Sheduler **/class Scheduler { constructor(){ this.cache = [] // 缓存任务数据 this.task = [] // 当前执行任务队列 this._max = 2 // 最大并发任务 } add(promi
2021-07-18 19:19:06
2997
原创 Safari兼容问题
1.日期转换我们通用的时间格式一般是2021-06-22,这种格式在Safari下进行new Date ()转换是不支持的,要修改为2021/06/22
2021-06-22 10:31:14
288
原创 判断 if(a==1 && a==2 && a==3)
if(a==1 && a==2 && a==3)const a = { i: 0, toString: function() { this.i++ return this.i }}const a = { i: 0, valueOf: function() { this.i++ return this.i }}console.log(a == 1 && a ==2 && a ==
2021-06-08 11:21:51
451
原创 JavaScript判断括号是否闭合
// 判断标签是否闭合function isCloseed(params, keyCollection = [['{','}'],['[',']'],['(',')'],['<','>']]) { const array = params.split(''); // 过滤掉不符合要求的单括号 keyCollection = keyCollection.filter(item=> Array.isArray(item) && item.length === ..
2021-06-08 11:19:14
822
原创 vue-cli3.0指定使用的vue源文件是哪个
module.exports = {lintOnSave: true,configureWebpack:{resolve: {alias: {‘vue’: ‘vue/dist/vue.esm.js’ // 用 webpack 1 时需用 ‘vue/dist/vue.common.js’}}},devServer: {overlay: {warnings: true,errors: true}}}
2021-05-18 17:53:17
170
原创 实现无重复字符的最长度字符串 JavaScript
function noRepeatString(string) { let str = '' let arr = [] for (let i of string) { if (str.indexOf(i) < 0) { str += i } else { arr.push(str.length) str = i } } arr.push
2021-05-14 17:50:43
143
原创 vue 自定义指令 input框计算输入字数
export default { install(vue) { vue.directive('limit-count', { bind: function(el) { vue.nextTick(() => { el.style.position = 'relative' const target = el.getElementsByTagName('input')[0] || el.getElementsByTagName
2021-05-11 19:02:43
1320
原创 base64 生成file 对象
base64toFile(b64Data, filename, contentType) {let sliceSize = 512;let byteCharacters = atob(b64Data);let byteArrays = [];for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) { let slice = byteCharacters.slice(offset, offset
2021-05-11 18:59:22
376
原创 本地图片生成base64
/** * @description: 获取本地图片base64 * @param {Object} file blob [input:file].files[0] * @return { String } base64 */getLocalFileBase64 = file => { return new Promise((resolve, reject) => { const fileReadr = new FileReader() fil
2021-05-11 18:57:54
174
原创 多维数组扁平化
// 数组扁平化 arr 多维数组Arrayflat(arr){ const currentArr = [] arr.forEach(element => { if(Array.isArray(element)) { currentArr.push(...this.Arrayflat(element)) } else { currentArr.push(element) } }); return currentArr
2021-05-11 18:55:47
114
原创 数组对象去重
/** * @description: 数组对象去重 * @param {Array} obj 需要去重的数组对象 * @param { String } key 去重的依靠值 * @return {Array} 去重后的数组 */ arrayReport(obj, key) { const exits = {} const noReport = obj.reduce((target, next) => { !exits[next[ke..
2021-03-19 10:06:44
116
原创 判断对象是否是空值
对象空值处理function isEmpty(obj) {if(!obj) return new Error(‘请传入正确的值’) // 没有传入参数处理if(Object.prototype.toString.call(obj) !== ‘[object Object]’) return new Error(‘应为对象类型’) // 传入参数不是对象类型的return JSON.stringify(obj)=== ‘{}’}应用console.log(isEmpty([])); //应为对
2021-02-14 14:05:51
207
原创 node做中间层如何进行文件上传
如今越来越多的前端项目加入了node做中间层,进行一些请求的拦截,转发等,但是在进行ajax进行文件上传的时候比如无法直接获取客户端传递过来的formdata数据。node层请求库我使用的是node-fetch
2021-01-23 10:32:06
535
原创 axios封装
axios.js```handlebars```handlebarsimport axios from 'axios' // 引入axiosimport Vue from 'vue'import { errorStatus } from '@/utils/api/err'import { getToken } from '@/utils/auth'import { Loading } from 'element-ui'import _ from 'lodash'let loadingI
2021-01-08 16:23:08
352
原创 前端 AES与RSA加解密
安装npm install crypto-js --savenpm install jsencrypt --save核心代码import { JSEncrypt } from 'jsencrypt'import CryptoJS from 'crypto-js'class Decipherer { constructor() { // rsa this.jsEncrypt = new JSEncrypt() // aes this.key = '' /
2020-11-27 10:00:51
553
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人