精确判断对象类型

  1. Object.prototype.toString.call()

image.png

类型转换

快速转 Number

  1. var a = '1'
  2. console.log(typeof a)
  3. console.log(typeof Number(a)) // 普通写法
  4. console.log(typeof +a) // 高端写法

快速转 Boolean

  1. var a = 0
  2. console.log(typeof a)
  3. console.log(typeof Boolean(a)) // 普通写法
  4. console.log(typeof !!a) // 高端写法

混写

先转为 Number 再转为 Boolean

  1. var a = '0'
  2. console.log(!!a) // 直接转将得到 true,不符合预期
  3. console.log(!!+a) // 先转为 Number 再转为 Boolean,符合预期

在侧边栏中用到了这种用法:

  1. !!+Cookies.get('sidebarStatus')

js 和 css 两用样式

template 中需要动态定义样式,通常做法:

  1. <template>
  2. <div :style="{ color: textColor }">Text</div>
  3. </template>
  4. <script>
  5. export default {
  6. data() {
  7. return {
  8. textColor: '#ff5000'
  9. }
  10. }
  11. }
  12. </script>

高端做法:

  • 定义 scss 文件 ```css $menuActiveText:#409EFF;

:export { menuActiveText: $menuActiveText; }

  1. - js 中引用:
  2. - 使用 import 引用 scss 文件
  3. - 定义 computed styles 对象变成响应式对象
  4. - template 中使用 styles 对象
  5. ```vue
  6. <template>
  7. <div :style="{ color: styles.menuActiveText }">Text</div>
  8. </template>
  9. <script>
  10. import styles from '@/styles/variables.scss'
  11. export default {
  12. computed: {
  13. styles() {
  14. return styles
  15. }
  16. }
  17. }
  18. </script>

连续解构

从数组第一个对象元素中提取某个属性,比如:err 对象中包含一个 errors 数组,errors 数组每一个对象都包含一个 msg 属性

  1. err = {
  2. errors: [
  3. {
  4. msg: 'this is a message'
  5. }
  6. ]
  7. }

快速的提取方法为:

  1. const [{ msg }] = err.errors

如果不用解构写法为:

  1. const msg = err.errors[0].msg

toLocaleString妙用—格式化数字

MDN参考文档

数字分割

  1. const num1 = 123456.789
  2. console.log(num1.toLocaleString()) // 123,456.789

数字转为百分比

  1. const num2 = 0.66
  2. console.log(num2.toLocaleString('zh', { style: 'percent' })) // 66%

数字转为货币表示法

  1. const num3 = 1000000.69
  2. console.log(num3.toLocaleString('zh', { style: 'currency', currency: 'cny' }))
  3. console.log(num3.toLocaleString('zh', { style: 'currency', currency: 'cny', currencyDisplay: 'code' }))
  4. console.log(num3.toLocaleString('zh', { style: 'currency', currency: 'cny', currencyDisplay: 'name' }))
  1. ¥1,000,000.69
  2. CNY 1,000,000.69
  3. 1,000,000.69人民币