JavaScript基础之对象

对象中参数获取和值的接收 1.对象中利用key获取value. | [] let obj = {name: 'jqf', age: 19} for (let key in obj) { // console.log(obj.key);//会报undefined console.log(obj[key]);//jqf,19 } 👉 delete Object.key() delete obj.name console.log(obj);//{ age: 19 } 2.参数/配置合并 👉 展开语法 利用展开语法合并对象,让后面传入的参数覆盖默认参数,完成合并 function upload(params) { let config = { url: '/images', type: '*.jpg,*.png' } config = {...config, ...params} //do something... console.log(config); } upload({type:'*.webp'})//{ url: '/images', type: '*.webp' } 👉 解构赋值 解构赋值会把相同key的进行合并,后面覆盖掉前面的 function upload(params = {}) { let {url = '/images', type = '*....

Aug 31, 2020 · 5 min · Archai

JavaScript基础之函数相关

关于函数传参 当参数数量不确定时,通常用arguments 来统一接收 function sum() { return [...arguments].reduce((res, i,) => res + i, 0) } let res = sum(1, 2, 3) console.log(res);//6 可以用展开语法代替arguments接收所有的参数: function sum(...args) { return args.reduce((res, i,) => res + i, 0) } let res = sum(1, 2, 3) console.log(res);//6 注意: 接收参数时展开语法放其他形参后面,做统一接收 递归函数 递归函数有两个关键点,一是要有退出执行的条件,二是要不断执行自身并返回 递归思想实现阶乘函数 function factorial(num) { if (num === 1) { return num } return num * factorial(--num) } 如果用到箭头函数,可以简写为: function factorial(num) { return num === 1 ?...

Aug 28, 2020 · 1 min · Archai

JavaScript基础之Map与Weakmap类型

Map类型 1.属性 👉 set() 设置值 let map = new Map() let fn = function () {console.log('this is function')} let user = {name: 'jqf', age: 18} map.set('key', 'value') map.set(fn, 'function') map.set(user, 'object') console.log(map); /*Map(3){"key" => "value", ƒ => "function", {…} => "object"}*/ 注意: Map类型,字符串、函数、对象都可以作为key设置 👉 size Map长度 console.log(map.size);//3 👉get() 获取值 console.log(map.get(fn));//function //通过key获取value 👉 delete() / clear() 删除某个,清空Map console.log(map.delete(fn));//true console.log(map); /*Map(3){"key" => "value", {…} => "object"}*/ 👉 has() 是否有某个key console.log(map.has(user));//true 2.遍历 👉forEach(val,key,map)...

Aug 26, 2020 · 1 min · Archai

JavaScript基础之Set与Weakset

Set类型 1.属性 👉 size :数组长度 let set = new Set([1, 2, 3]) console.log(set.size);//9 👉 add() :添加元素 console.log(set.add(99));//返回修改后的数组Set(4) { 1, 2, 3, 99 } console.log(set);//原数组已经被修改Set(4) { 1, 2, 3, 99 } 👉 delete() :删除元素 console.log(set.delete(99));//true console.log(set);//Set(3) { 1, 2, 3 } 👉 has() :有某个元素 console.log(set.has(3)); //true 👉 clear():清空数组 set.clear()//返回undefined console.log(set);//Set(0) {} 2.遍历Set 👉 forEach() 方法 let set=new Set(['jqf','fin','zzh']) set.forEach((value, samevalue, set) => { console.log(value);//jqf,fin,zzh console.log(samevalue);//jqf,fin,zzh console.log(set);//Set(3) { 'jqf', 'fin', 'zzh' } }) //这里回调中的参数,前两个都是一样的值, //第三个参数为遍历的Set 👉 [....

Aug 26, 2020 · 1 min · Archai

JavaScript基础之Symbol类型

Symbol() 类型不能当做普通对象(不能加属性值),只能当做一种永远都不会重复的字符串 定义 方法: Symbol(desc)、Symbol.for(desc) let s1 = Symbol('d') let s2 = Symbol.for('d') let s3 = Symbol.for('d') console.log(s1.description);//d console.log(Symbol.keyFor(s2));//d console.log(s1 === s3);//false console.log(s2 === s3);//true 注意: 利用Symbol() 定义的值永远都不会相等,而Symbol.for() 定义的,如果描述相同,则值相等 定义对象时,key相同会覆盖的问题 普通方式定义: let user1={ name:'李四' } let user2={ name:'李四' } let grade={ [user1.name]:{C:98,E:60}, [user2.name]:{C:99,E:59} } console.log(grade);//{'李四':{C:99,E:59}} 可以看到,后面的覆盖掉了前面的 利用Symbol() 定义 let user1={ name:'李四', key:Symbol() } let user2={ name:'李四', key:Symbol() } let grade={ [user1.key]:{C:98,E:60}, [user2.key]:{C:99,E:59} } console.log(grade)//{[Symbol(user1)]: { C: 98, E: 60 },[Symbol(user2)]: { C: 99, E: 59 }} console....

Aug 24, 2020 · 1 min · Archai

JavaScript基础之数组深倔

数组是经常用到的一种数据结构 定义方法 let a = new Array(3) let b = [1, 2, 3] 如何定义一个只有一个元素的数组? new Array(n)表示有n个空元素的的数组,利用Array.of(n),可以定义一个只有n元素的数组 类型转换 利用join 可以把数组转成字符串 let a = [1, 2, 3, 4, 5] let b = a.join('') console.log(b); 说明: join 的作用就是将数组中的所有元素用指定的符号连接,成为一个字符串 如何把DOM集合NodeList转换成普通数组形式? Nodelist形式无法使用.map(),reduce()等方法(能用forEach()),处理不太方便,因此需要转换成普通数组类型 let titles = document.querySelectorAll('h1'); [...titles].map((v, i,titles) => { console.log(v); }) titles.map()//Uncaught TypeError: titles.map is not a function 注意: 利用展开语法可以把DOM集合转换成普通数组形式 解构赋值 是一种数组间批量赋值的方法 let [name, age] = ['fin', 18] console....

Aug 24, 2020 · 3 min · Archai