
JavaScript
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
Supernova_gu
这个作者很懒,什么都没留下…
展开
-
在项目里函数柯里化的使用场景
1、对Element upload 的方法进行二次封装问题分析在上传图片时需要上传三张图片,三张图片的所属不同;但是都是通过同一函数触发保存用户上传的图片,问题是无法识别图片的所属;如果直接在调用时传参会破坏原有的参数;所以最后我通过 resetImg(file,filelist,view)(1) 柯里化方式 给图片添加参数、标记来源;// 原有参数file,filelist,view,通过二次函数封装,传入值(‘1’):on-change="resetImg(file,filelist原创 2022-02-08 14:34:41 · 521 阅读 · 0 评论 -
JS 图片上传
一、获取File对象// 获取File对象 let firstImg = data.add_design.first_pic_whether.raw;1、 用户上传的图片数据.1.1、 图片数据详情二、使用new formData() let binary = new FormData() binary.append('file',firstImg) binary.append('name','2') 请求预览三、发送数据 PostData.call(this原创 2022-02-08 13:53:44 · 3762 阅读 · 0 评论 -
手写深拷贝
什么是深拷贝深拷贝就是完全拷贝一份独立的属性B是A的拷贝,其中B没有对A对象/数据做任何引用只有要一条数据的引用,那就是浅拷贝问清楚每一项问题数据类型数据规模性能要求运行环境其他要求最简单的方法:JSON序列化和反序列化JSON.parse(JSON.stringify(data))缺点不支持函数,如果有函数会直接忽略不支持undefined,只支持null不支持引用,JSON只支持树状的结构不支持正则...原创 2022-01-21 09:13:53 · 231 阅读 · 0 评论 -
两个网站之间的登录验证
在A网站登录成功后,跳转B网站时,加上用户IDB网站读取网址,截取ID并保存到本地数据在每次跳转页面时判断是否有本地数据,没有就跳回A网站原创 2022-01-07 17:51:01 · 214 阅读 · 0 评论 -
promise的用法
主要作用封装异步函数,异步函数在被调用时 成功后通过.then返回需要的数据// new一个Promise对象,然后给需要返回的数据给resolve function data(){ return new Promise((resolve,reject)=>{ resolve(thisList) }) }// 调用data函数 获得thisList data().then(res=>{ console.log(res)原创 2022-01-06 09:22:11 · 315 阅读 · 0 评论 -
JS 将数组循环赋值对象
// 获取每一个数组的第一个,第二个,第三个...通过push重新拼装成一个新的数组对象 let num = 0 let u = 0 result.map(e=>{ e.map(y=>{ temporaryObj.push(y) if(u == index){ for(let key in keyName[0]){ /..原创 2022-01-05 12:11:31 · 3460 阅读 · 0 评论 -
全栈开发的定义
定义被误解的全栈 = Node.js + JavaScript全栈开发 != 前端开发 + 后端开发一开始的LAMP = Linux + Apache + MySql + PHP后来的MEAN = MongoDB + Express + Angular + Node什么才是全栈良好的计算机基础和英语阅读能力服务器知识(权限、内存、CPU、硬盘、云服务)网络知识(带宽、网络架构)数据模型(MySql、MongoDB、索引、备份)安全知识(SQL防注入、XSS、CSRF、Repla原创 2021-12-21 11:56:57 · 2217 阅读 · 0 评论 -
低代码平台实现原理
整个可视化搭建系统分为三部分,分别是配置页(setting),视图页(view) 和 json schema。配置页生成 json schema,视图页消费 json schema转载 2021-12-20 21:24:48 · 3381 阅读 · 0 评论 -
SVG Symbols
yarn eject 拿到webpacl配置根据svg-sprite-loader的文档操作// webpack配置{ test: /\.svg$/, use: [ {loader: 'svg-sprite-loader', options: {}}, { loader: 'svgo-loader', options: {}} ]},原创 2021-12-15 16:39:09 · 846 阅读 · 0 评论 -
Promise.allSettled()与all()的区别
allSettled()与all()的有什么区别呢?它们所返回的数据不太一样,all()返回一个直接包裹resolve内容的数组,则allSettled()返回一个包裹着对象的数组。.all()方法,如果有一个Promise对象报错了,则all()无法执行,会报错你的错误,无法获得其他成功的数据。则allSettled()方法是不管有没有报错,把所有的Promise实例的数据都返回回来,放入到一个对象中。如果是resolve的数据则status值为fulfilled,相反则为rejected。.原创 2021-12-15 10:51:28 · 2802 阅读 · 0 评论 -
动态型语言和静态型语言
动态语言动态语言没有从编译代码到执行代码的中间过程,用动态语言编写应用程序可以快速看到输出。代价是,动态语言不提供静态语言提供的类型安全特性动态类型语言 一般是脚本语言,比如说Perl、Ruby、Python、PHP、JavaScript,可以更快地编写代码,不必每次都指定类型,做type checking是在run-time的时候去做的。优点是可能代码开发快,但是维护难(但是脚本语言平常写的代码量应该不太多,还比较好debug和修改)静态语言静态类型语言 如果在编译时知道变量的类型,则原创 2021-11-10 10:57:54 · 1971 阅读 · 0 评论 -
cookie操作
cookie存储document.cookie = "shop_id=" + sndocument.cookie = "operationtime=" + escape(this.detail.detail_time)cookie读写let read = document.cookie原创 2021-10-12 15:13:28 · 104 阅读 · 0 评论 -
JS当前表格下载功能
// 表格导出功能downOrderTable(){ let order = XLSX.utils.table_to_book(document.getElementById("orderTable")); //此处传入table的DOM节点 let orderXlsx = XLSX.write(order, { bookType: "xlsx", bookSST: true, type: "array" }) try { FileSaver.saveAs(原创 2021-09-27 15:11:35 · 203 阅读 · 0 评论 -
JS下载表格
4、使用js-xlsx库,实现真正的.xls.xlsx导出参考https://github.com/SheetJS/js-xlsx①安装npm install xlsx或者bower install js-xlsx②导入官方github上有给各种框架的demo:可以根据项目框架选择导入方式,这里是vue:import XLSX from ‘xlsx’③使用 let workbook = XLSX.utils.table_to_book(wholeTable) let xls =原创 2021-09-09 17:47:39 · 426 阅读 · 0 评论 -
TS的用法
TypeScript 好处类型提示:更智能的提示编译时报错:还没运行代码就知道自己写错了类型检查:无法点出错误的属TypeScript 说明@Prop prop数据类型声明@Prop(Number) xxx:number | undefined// Prop 告诉 Vue xxx不是data 是prop// Number 告诉Vue xxx 运行时 是个number// xxx 是 属性名// number | undefined 告诉TS xxx的编译时类型@Component 装原创 2021-08-10 09:37:17 · 464 阅读 · 0 评论 -
JS的函数
引用地址let fn = () => console.log(‘hi’)let fn2 = fnfn2()fn保存了匿名函数的地址这个地址被复制给了fn2fn2()调用了匿名函数fn和fn2都是匿名函数的引用而已真正的函数不是fn也不是fn2函数对象let fn = () => ({ name: xxx })在块级作用域外加圆括号会自动将块级作用域转化为对象调用时机调用的时机不同,结果不同根据函数的调用时机,打印出相应的结果作用域function f1原创 2021-07-31 00:32:15 · 119 阅读 · 0 评论 -
JS的数组
JS数组是一种特殊的对象JS没有真正的数组,只是用对象模拟数组典型的数组(1)元素的数据类型相同(2)使用连续的内存存储(3)通过数字下标获取元素但JS的数组不是这样(1)元素的数据类型可以不同(2)内存不一定是连续的(对象是随机存储的)(3)不能通过数字下标,而是通过字符串下标(4)这意味着数组可以有任何的key比如let arr = [1,2,3] arr[‘xxx’] = 1伪数组(1)伪数组的原型 直接指向 object(2)伪数组的原型链中并没有数组的原型(3)原创 2021-07-28 15:07:07 · 403 阅读 · 0 评论 -
var let const声明
var声明变量提升,提到最前赋不赋值都可以无需先声明再使用全局声明的var变量,会变成window的属性let声明遵循块作用域,及适用范围不超出{}不能重复声明(一个作用域里只可以有一个相同名字的变量)赋不赋值都可以必须先声明再使用全局声明的let变量,不会变成window的属性for循环配合let有奇效const声明遵循块作用域,及适用范围不超出{}不能重复声明(一个作用域里只可以有一个相同名字的变量)声明时必须赋值,赋值后不能更改必须先声明再使用全局声明的co原创 2021-04-29 21:51:05 · 96 阅读 · 0 评论 -
promise和async、await小记
主要记住三点:(1)node.js典型的回调风格(2)promise是什么(3)async + .then是目前最好的解决异步回调方法我们现在用的promise实际上是Promise/A+的规范的约定,async异步函数的返回是一个promise,也就是可以在函数外接.Then().catch()方法await作用于async内部,等待promise的结果返回,然后将结果进行下一步操作。Promise/.then/async/await都是解决异步的解决方案,他们是一体的,原创 2021-03-28 18:11:46 · 157 阅读 · 0 评论 -
JS 手机touch事件
处理Touch事件能让你跟踪用户的每一根手指的位置。你可以绑定以下四种Touch事件:touchstart: // 手指放到屏幕上的时候触发touchmove: // 手指在屏幕上移动的时候触发touchend: // 手指从屏幕上拿起的时候触发touchcancel: // 系统取消touch事件的时候触发。至于系统什么时候会取消,不详 //属性client / clientY:// 触摸点相对于浏览器窗口viewport的位置pageX / pageY:// 触摸点相对于页面的位原创 2021-03-10 15:58:41 · 366 阅读 · 0 评论 -
Array属性和方法
查看官方文档属性Array.length// Array 构造函数的 length 属性,其值为1(注意该属性为静态属性,不是数组实例的 length 属性)。get Array[@@species]// 返回 Array 构造函数。Array.prototype// 通过数组的原型对象可以为所有数组对象添加属性。方法Array.from()从类数组对象或者可迭代对象中创建一个新的数组实例。Array.isArray()用来判断某个变量是否是一个数组对象。Array.of()原创 2021-02-28 21:33:32 · 387 阅读 · 0 评论 -
模块化
模块化代码的模块化常见的生产级编程语言都支持模块化,如 C++、Java、Python、PHP、JS 中都有 import 或 include 保留字。通常以单个文件作为模块的最小单元。代码的模块化设计一般可抽象为三个部分:输入(import)计算(业务代码)输出(export)为什么要用模块化把复杂问题分解成多个子问题关注点分离大型软件开发的技术基础可扩展可替换代码重用使多人并行开发成为可能面向接口开发(而不是面向实现开发)...原创 2021-02-04 19:28:20 · 130 阅读 · 0 评论 -
JS总结
一、JS世界consoledocument对象数组函数JS引擎1.编译2.优化3.执行4.垃圾回收:把JS用完的内存回收,方便再使用内存:一切都运行在内存中线程与进程:如果进程是车间,那么线程就是流水线Stack:每个数据顺序存放,非对象数据类型存储到这里Heap:每个数据随机存放,对象数据类型存储到这里二、JS三座大山原型每个函数都有一个prototype,每个对象都有一个__ proto __prototype存储了对象的共有属性this1原创 2021-01-22 08:54:52 · 168 阅读 · 0 评论 -
JS 函数的执行时机
结果为什么是6个6let i = 0for(i = 0; i<6; i++){ setTimeout(()=>{ console.log(i) },0)}尽快,而不是立即当浏览器解析这段代码时,当解析到for循环时,因为JS的定时器并不是立即响应,而是会把目前的事情处理完后一次响应,所以结果不是0,1,2,3,4,5而是会输出为6个6那怎么输出0,1,2,3,4,5呢?let和for一起用的时候,JS会加东西for(let i = 0; i<6原创 2021-01-21 16:46:23 · 94 阅读 · 0 评论 -
JS 类
一、为什么需要分类理由一有很多对象拥有一样的属性和行为,需要把他们分为同一类这样创建类似对象的时候很方便理由二对象拥有其他的属性和行为,就需要不同的分类而Object穿件出来的对象,是最没有特点的对象二、对象的分类常见的有:ArrayFunctionDateRegExp三、声明\使用方式class Circle{ constructor(radius){ this.radius = radius } getArea(){ return Math.pow(原创 2021-01-21 12:13:22 · 86 阅读 · 0 评论 -
JS<new和构造函数>
new X()new X() 自动做了四件事自动创建空对象自动为空对象关联原型,原型地址指定为X.prototype自动将空对象作为this关键字运行构造函数自动 return this构造函数 X定义构造函数就是可以构造出对象的函数X函数本身负责给对象本身添加属性X.prototype对象负责保存对象的共有属性其他对象.__ proto __ === 其构造函数.prototype每个函数都有prototype属性每个prototype都有constructor属原创 2021-01-21 08:53:54 · 444 阅读 · 0 评论 -
JS 对象基本用法(复杂数据类型)
对象的特点定义无序的数据集合健值对的集合键名(属性名)键名(属性名)是字符串,可以包含任意字符引号可以省略,省略之后就只能写标识符引号省略了,键名也还是字符串所有不加[ ]的属性名会自动变成字符串加了[ ]会当做变量求值(用变量做属性名)值如果不是字符串,会自动变成字符串Object.keys(obj)可以得到obj的所有key对象的隐藏属性JS中每一个对象都有一个隐藏属性(每个对象都是未觉醒的赛亚人(__ proto __),他可以在需要觉醒的时候去往赛亚星球(该对象的原创 2021-01-20 15:06:25 · 260 阅读 · 0 评论 -
JS基本语法
一、表达式和语句表达式值:1+2表达式的值为3返回值:add(1,2)表达式的值为函数的返回值console.log表达式的值为函数本身console.log(3)表达式的返回值为:undefined;因为3是打印出来的数值,并不是返回值。语句var a = 1是一个语句二者的区别表达式一般都有值,语句可能有也可能没有语句一般会改变环境(声明、赋值)注意大小写var a 和 var A 是不同的object 和 Object 是不同的function 和 Func原创 2021-01-19 18:53:08 · 160 阅读 · 1 评论 -
打开浏览器后
进程:程序的一次执行, 它占有一片独有的内存空间可以通过windows任务管理器查看进程线程:是进程内的一个独立执行单元是程序执行的一个完整流程是CPU的最小的调度单元关系一个进程至少有一个线程(主)程序是在某个进程中的某个线程执行的。另一方面,这种语言的设计初衷,是为了解决一些简单的网页互动(比如,检查"用户名"是否填写),并没有考虑复杂应用的需要。设计者做梦也想不到,Javascript将来可以写出像Gmail这种极其庞大复杂的网页。没有先例Javascript同时结合了函数式编程和面向对象编程的特点原创 2021-01-18 19:07:51 · 148 阅读 · 0 评论 -
五种this的详解
1、window// 第一种:this 指的就是 windowfunction fn() { console.log(this);};console.log(this);2、事件中的this// 第二种:所有事件函数中的this,都是这个监听事件监听对象//在事件函数中 this===e.currentTarget 也就是事件侦听的对象。在事件中使用this,其实事件函数内...原创 2020-04-18 23:50:58 · 976 阅读 · 0 评论 -
原型和原型链笔记
一、原型的诞生:实例属性可以复制,实例方法不可以复制,这个对属性来说没有什么问题,但是对于方法来说问题就很大了,因为方法都是在做完全一样的功能,但是却又两份复制,如果一个函数对象有上千和实例方法,那么它的每个实例都要保持一份上千个方法的复制,这显然是不科学的,这可肿么办呢,prototype应运而生。-二、原型是什么:基本概念在面向对象编程中除了一些库函数我们还是希望在对象定义的时...原创 2020-04-18 23:41:38 · 147 阅读 · 0 评论