前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录前端工作中获得的经验(六)

记录前端工作中获得的经验(六)

作者头像
y191024
发布2024-01-29 17:05:38
850
发布2024-01-29 17:05:38
举报

如果定义了一个函数,能够通过传入的不同参数进行不同的操作,那最好写成一个对象,通过不同的参数,去调用这个对象的对应方法,如下(不要使用switch哈

代码语言:javascript
复制
function doSth(type, a, b) {
  return sthObj[type](a, b)
}
const sthObj = {
    add(a, b) {
        return a + b
    }, 
    sub(a, b) {
        return a - b
    }
}
const res = doSth('add', 1, 2)
console.log(res)
  • 怎么判断一个对象的键值相不相同,我现在学会两种方法

(1)

代码语言:javascript
复制
const obj1 = { name: 'yft', age: 20 }
const obj2 = { name: 'yft', age: 20 }
console.log(obj1 === obj2) //false 因为对象的地址肯定是不同的,所以为false

const res = Object.keys(obj1).every(i => obj1[i] === obj2[i])
console.log(res)  //true

(2) 但是不适用于复杂类型

代码语言:javascript
复制
const obj1 = { name: 'yft', age: 20 }
const obj2 = { name: 'yft', age: 20 }

const res = JSON.stringify(obj1) === JSON.stringify(obj2)
console.log(res)  //true

如下,函数类型会被排除在外,无法判断

代码语言:javascript
复制
const obj1 = { name: 'yft', age: 20, b: (a) => { return } }
const obj2 = { name: 'yft', age: 20, a: (a) => { return } }

const res = JSON.stringify(obj1) === JSON.stringify(obj2)
console.log(res)  //true
  • 关于枚举类型,基本类型比如字符串/数字/布尔值并不是对象而是原始值,是不可变的,没有属性,因此也没有可不可枚举的问题。 而对象和数组中,可枚举属性就是在循环中能循环到的属性,相反就是不可枚举的属性,在Object.defineProperty中可以将属性定义为不可枚举的。这样的话循环的时候不会循环到这个属性。一般来说,自定义添加的属性都是可以枚举的,而一些内建的属性是不可枚举的,比如length,还有原型链上的属性。(个人理解吧不一定对)
  • 如何用一行代码实现kebabCase
代码语言:javascript
复制
const str = 'DataSource'
const res = str.replace(/([A-Z])/g, ($0, $1, index) => index === 0 ? $1.toLowerCase() : '-' + $1.toLowerCase())
// data-source

好好学一下replace的用法,十分强大

  • 在学习ts的过程中知道了extends的神奇之处,如果extends前面的是泛型,且泛型的类型是联合类型的时候,他会使用分配律计算结果,然后讲结果再组成一个联合类型,真的涨知识了。阮一峰的ts是真的强,讲得狠狠狠细致
  • 正则的规则是可以复用的,比如你将一部分的规则用括号()括起来,这就是第一组规则,当你想复用的时候,就用\1即可,如果你第一次匹配的是xx,下一次复用的时候匹配的也得是一样的内容,我发现一个使用场景,就是匹配标签之间的内容, 标签的两边肯定都是一样的,h1肯定对应的还是h1, div对应的还是div,这时候就可以复用规则了。
代码语言:javascript
复制
let res = '<h1>你好<111>我是内容</h1>'
.replace(/<([0-9a-z]+)>(.*)<\/\1>/gi, ($0, $1, $2) => $2);
// 其中的$2就是匹配到的标签内的内容
  • 经过同事的指点,明白了不要什么事都等准备好了再去做,要边实践边学习,自然而然的就会了
  • 快捷键,怎么向上插一行: Ctrl+Shift+Enter, 这个还是很实用的。
  • 了解一下正则的贪婪匹配和懒惰匹配。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档