![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
MiyukkiYan
这个作者很懒,什么都没留下…
展开
-
js-utils
校验年龄checkAge (birthday, minAge, maxAge) {2. let today = new Date ()3. birthDay = birthDay + "00:00:00"4. birthDay = new Date (birthDay)5. birthDay.setFullYear(birthDay.getFullYear + minAge)6. return today >= birthDay7. }校验年龄区间: 校验传入的.原创 2021-09-14 23:27:34 · 157 阅读 · 0 评论 -
ts学习第九篇 类型保护
// 类型保护// 通过一些关键字 typeof instanceof for in 来缩小范围export {}function double (input: string|number) { if (typeof input === 'string') { console.log(input) }else if (typeof input === 'number'){ console.log(input) }}class Animal{}class Bird原创 2020-12-27 23:36:33 · 617 阅读 · 0 评论 -
ts学习第八篇 兼容性
接口的兼容性:// 接口的兼容性// 1.如果传入的变量和声明的类型不匹配, TS就会进行兼容性检查// 2. 原理: Duck-Check, 就是说只要目标类型中声明的属性变量在元类型中都存在就是兼容的export {}interface Animal { name: string, age: number}interface Person { name: string, age: number, gender: number}// 要判断目标类型Person是否能原创 2020-12-27 17:38:32 · 221 阅读 · 0 评论 -
ts学习第七篇 泛型
export {}// 泛型function creatArray0(length: number, value: any): Array<any> { let result: any[] = [] for(let i = 0; i < length; i++) { result[i] = i } return result}// 以上函数满足返回一个数组的要求,但是传参value没有用上, 而我们的期望是返回的数组内容是传参value, 那么就需要用到泛原创 2020-12-25 01:16:00 · 345 阅读 · 0 评论 -
ts学习第六篇 接口
// 接口/** * 1.接口一方面可以在面向对象编程中表示为 行为的抽象, 另外可以用来描述 对象的形状 * 2.接口就是把一些类中共有的属性和方法抽象出来,可以用来约束实现此接口的类 * 3.一个类可以继承另一个类并实现多个接口 * 3.接口像插件一样是用来增强类的, 而抽象类是具体类的抽象概念 * 4.一个类可以实现多个接口,一个接口也可以被多个类实现,但是一个类可以有多个子类,只能有一个父类 */export{}// 描述对象的形状interface Speakable {原创 2020-12-22 23:47:17 · 142 阅读 · 0 评论 -
ts学习第五篇 抽象类和重写重载继承多态
// 抽象类和重写重载继承多态export {}// 抽象类.抽象方法不包括具体实现, 必须在子类里面实现; 抽象方法必须写在抽象类里面abstract class Animal { //抽象类 name: string abstract speak():void //抽象方法}class Cat extends Animal { speak(): void { //重写父类的方法speak console.log('喵喵喵'); }}原创 2020-12-22 21:48:47 · 1379 阅读 · 0 评论 -
ts学习第四篇 装饰器
//装饰器export{}// 1.类装饰器 用来监视 修改 替换类的定义namespace a { function addNameEat( constructor: Function) { constructor.prototype.name = '111' constructor.prototype.eat = function() {} } @addNameEat class Person { name: String eat:原创 2020-12-22 21:25:52 · 147 阅读 · 0 评论 -
ts学习第三篇 类 继承 修饰符
类:// 类export {} //加上export或者import,表示这个文件是一个模块,里面声明的变量就会变成局部变量; 不加表示全局变量,如果其他文件也有一样的命名,就会报错class Person { name: string = "111"; //设置默认值 getName():void { console.log(this.name); }}let p1 = new Person()p1.name = '111'p1.getName()// 定义原创 2020-12-22 21:22:50 · 309 阅读 · 0 评论 -
ts学习第二篇函数
函数:// 函数function hello (name: string ): void { // void表示没有返回值 console.log(111);}//定义一个类type GetName = (firstName: string, lastName: string) => string//使用let getName: GetName = function(firstName: string, lastName: string): string { return原创 2020-12-20 23:12:07 · 174 阅读 · 0 评论 -
ts学习第一篇
全局安装typescriptnpm i typescript -g新建一个项目: npm init -y新建一个ts文件: 1.ts生成ts配置文件:tsc --init运行:终端–》运行代码–》ts xxx如果想要右键直接运行代码: cnpm i ts-node -g --》 右键 run codetsc --watch 编写完代码后立即编译基础数据类型:let a = 12// 数组类型let array: Number[] = [1, 2, 3]let array1:原创 2020-12-09 00:32:05 · 320 阅读 · 0 评论 -
装饰器学习
Function.prototype.before = function(callback){ let self = this; return function(){ // 这个函数中的this指的是 newFn()前面的this callback(); // before 的参数 console.log(this) self.apply(self,arguments); }}function fn(val){ conso原创 2020-08-22 10:12:45 · 58 阅读 · 0 评论 -
样式
main.js中引入:require('@/styles/common.styl')common.styl:/* width */.w50 width 50%.w85 width 85%.wid-85 width 85% !important max-width 400px !important/* margin*/.mb-12 margin-bottom 12px.mb-15 margin-bottom 15px.mb-20 margin-bo原创 2020-08-19 07:29:24 · 96 阅读 · 0 评论 -
千位分隔符
// substringfunction format_with_substring(number) { var arr = (number + '').split('.'); console.log(arr); var int = arr[0] + ''; var fraction = arr[1] || ''; console.log(fraction); var f = int.length % 3; var r = int.substring原创 2020-08-17 22:37:48 · 333 阅读 · 0 评论 -
后端导出excel
download.js/** * @description Download file under Web browser * @param blob {Blob} * @param fileName {String} */export function downloadFile (blob, fileName) { if (!blob) { return } if (!(blob instanceof Blob)) { blob = new Blob(Array(b原创 2020-08-17 22:28:02 · 293 阅读 · 0 评论 -
前端导出Excel
需要Export2Excel.js Export2Zip.js 这两个js文件import { export_json_to_excel as exportExcel } from '@/vendor/Export2Excel.js'计算属性: ` tableColumns () { return { [MAINTENANCE_FEE]: [VEHICLE_LICENSE, SECOND_DEPARTMENT_NAME, INSURANCE_DEPARTMENT_原创 2020-08-17 22:13:42 · 142 阅读 · 0 评论 -
把下划线命名转化为驼峰命名
// 把下划线命名转化为驼峰命名// 思路: 切割成数组,取数组0为小写,其他数组索引的字符串对应的开头为大写let str = 'if_you_are'let transform = str => { let s = str if (typeof s !=='string'){ alert('类型不对') } let arrStr = s.split('_') let newStr = '' arrStr.foreach((v, i) => { i原创 2020-08-16 18:05:44 · 902 阅读 · 0 评论 -
随机生成十六进制颜色值
书写一个函数, 随机生成十六进制颜色值比如:#ff6600 16 进制指0 - f之间的数。 //1.存储 0-f 十六个字符 //2.生成一个随机字符,生成六次 function randomColor() { var arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; // 下标 [0-15] var str原创 2020-08-16 17:52:29 · 1343 阅读 · 0 评论 -
flatten扁平化数组实现
1.function flat(arr) { // 验证 arr 中,还有没有深层数组 [1, 2, [3, 4]] const isDeep = arr.some(item => item instanceof Array) if (!isDeep) { return arr // 已经是 flatern [1, 2, 3, 4] } const res = Array.prototype.concat.apply([], arr)原创 2020-08-16 17:40:43 · 123 阅读 · 0 评论 -
把URL参数解析为一个对象
传统方法1.// function query(name) {// const search = location.search.substr(1) // 类似 array.slice(1)// // search: 'a=10&b=20&c=30'// const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i')// const res = search.match(re原创 2020-08-16 17:32:04 · 568 阅读 · 0 评论 -
防抖与节流
防抖// 防抖function debounce(fn, delay = 500) { // timer 是闭包中的 let timer = null return function () { if (timer) { clearTimeout(timer) } timer = setTimeout(() => { fn.apply(this, arguments)原创 2020-08-16 17:10:05 · 88 阅读 · 0 评论 -
bind方法实现
// 模拟 bindFunction.prototype.bind1 = function () { // 将参数拆解为数组 const args = Array.prototype.slice.call(arguments) // 获取 this(数组第一项) const t = args.shift() // fn1.bind(...) 中的 fn1 const self = this // 返回一个函数 return functi原创 2020-08-16 17:02:24 · 118 阅读 · 0 评论 -
深拷贝与浅拷贝
深拷贝与浅拷贝区别 浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign()) 深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝(例:JSON.parse()和JSON.stringify(),但是此方法无法复制函数类型)深拷贝实现/** * 深拷贝 */const obj1 = { age: 20, name: 'xxx', addre原创 2020-08-16 16:58:50 · 63 阅读 · 0 评论