JavaScript进阶(day02:构造函数&数据常用函数)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes

觉得有帮助的同学,可以点心心支持一下哈

一、深入对象

1.创建对象三种方式

①利用对象字面量创建对象

②利用new Object创建对象

③利用构造函数创建对象

2.构造函数

构造函数是一种特殊的函数,主要用来初始化对象,可以通过构造函数来快速创建多个类似的对象

命名以大写字母开头

只能由“new”操作符来执行

创建构造函数

总结

案例(利用构造函数创建多个对象)

      function Goods(name, price, count) {
        this.name = name
        this.price = price
        this.count = count
      }
      console.log(new Goods('小米', 1999, 20))
      console.log(new Goods('华为', 3999, 59))
      console.log(new Goods('vivo', 1888, 100))

实例化过程

1,创建新空对象

2,构造函数this指向新对象

3,执行构造函数代码,修改this,添加新的属性

4,返回新对象

3.实例成员&静态成员

实例对象

通过构造函数创建的对象称为实例对象,实例对象的属性和方法即为实例成员

静态成员

总结

二、内置构造函数

引用类型:Object、Array、RegExp、Date等

包装类型:String、Number、Boolean等

1.Object

Object 是内置的构造函数,用于创建普通对象。

三个常用静态方法(静态方法就是只有构造函数Object可以调用的)

1.1Object.keys

2.Object.values

3.Object. assign (了解)

经常使用的场景给对象添加属性

总结

2.Array

Object 是内置的构造函数,用于创建数组。

2.1数组常见实例方法-核心方法

reduce

reduce 返回函数累计处理的结果,经常用于求和等

1.如果有起始值,则以起始值为准开始累计, 累计值 = 起始值

2. 如果没有起始值, 则累计值以数组的第一个数组元素作为起始值开始累计

3. 后面每次遍历就会用后面的数组元素 累计到 累计值 里面 (类似求和里面的 sum )

案例(计算薪资)

      const arr = [
        {
          name: '张三',
          salary: 10000
        },
        {
          name: '李四',
          salary: 10000
        },
        {
          name: '王五',
          salary: 20000
        }
      ]
      console.log(arr.reduce((pre, current) => pre + current.salary, 0))

2.2数组常见方法-其他方法

案例(课堂小练习01)

 const spec = { size: '40cm*40cm', color: '黑色' }
      document.querySelector('div').innerHTML = Object.values(spec).join('/')

2.2数组常见方法-伪数组转换成真数组

静态方法Array.from()

3.String

3.1常见实例方法

1.实例属性length用来获取字符串的度长(重点)

2.实例方法split('分隔符')用来将字符串拆分成数组(重点)

3.实例方法substring(需要截取的第一个字符的索引[,结束的索引号])用于字符串截取(重点)

4.实例方法startswith(检测字符串[,检测位置索引号])检测是否以某字符开头(重点)

5.实例方法includes(搜索字符串[,检测位置索引号])判断一个字符串是否包含在另一个字符串中,根据情况返回true或false(重点)

代转化的对象.toString()

转换为字符串

案例(显示赠品练习)

const gift = '50g的茶叶,清洗球'
      // 根据逗号把字符串转为数组
      document.querySelector('div').innerHTML = gift
        .split(',')
        .map(item => `<span>【赠品】${item}</span><br/>`)
        .join('')

4.Number

toFixed()

三、综合案例

案例(购物车展示)

      let renderList = goodsList
        .map(item => {
          let { id, name, price, picture, count, spec, gift } = item
          // 对商品描述数据进行处理
          let specString = ''
          // 如果描述数据只有一个,则直接转换为字符串,否则用/进行分隔再转换为字符串
          specString = Object.values(spec).join('/')
          // 对赠品数据进行处理,使用map返回处理后的新数据
          let giftString = ''
          if (gift) {
            giftString = gift
              .split(',')
              .map(item => `<span class="tag">【赠品】${item}</span>`)
              .join('')
          }
          return `<div class="item">
        <img src="${picture}" alt="">
        <p class="name">${name}${giftString ? giftString : ''}</p>
        <p class="spec">${specString}</p>
        <p class="price">${price.toFixed(2)}</p>
        <p class="count">${count}</p>
        <p class="sub-total">${((price * 100 * count) / 100).toFixed(2)}</p>
      </div>`
        })
        .join('')
      document.querySelector('div').innerHTML = renderList
      // 数组累加
      const total = goodsList.reduce(
        (pre, current) => pre + (current.price * 100 * current.count) / 100,
        0
      )
      document.querySelector('.amount').innerHTML = total.toFixed(2)
  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值