思维导图
构造函数&数据常用函数
一、深入对象
1.1创建对象三种方式
1.2 构造函数
1.3实例成员&静态成员
二、内置构造函数
为什么简单数据类型也有方法?
基本数据类型包装成复杂数据类型
2.1 Object
2.2 Array
reduce()
第二个参数(初始值)不能省略,不然自动取第一个数组对象,但要累加的是数组对象的属性。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> const arr = [{ name: '张三', salary: 10000 }, { name: '李四', salary: 10000 }, { name: '王五', salary: 20000 }, ] // 涨薪的钱数 10000 * 0.3 // const money = arr.reduce(function (prev, item) { // return prev + item.salary * 0.3 // }, 0) const money = arr.reduce((prev, item) => prev + item.salary * 0.3, 0) console.log(money) </script> </body> </html>
find()
every()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> // const arr = ['red', 'blue', 'green'] // const re = arr.find(function (item) { // return item === 'blue' // }) // console.log(re) const arr = [ { name: '小米', price: 1999 }, { name: '华为', price: 3999 }, ] // 找小米 这个对象,并且返回这个对象 // const mi = arr.find(function (item) { // // console.log(item) // // // console.log(item.name) // // console.log(111) // return item.name === '华为' // }) // 1. find 查找 // const mi = arr.find(item => item.name === '小米') // console.log(mi) // 2. every 每一个是否都符合条件,如果都符合返回 true ,否则返回false const arr1 = [10, 20, 30] const flag = arr1.every(item => item >= 20) console.log(flag) </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div></div> <script> const spec = { size: '40cm*40cm', color: '黑色' } //1. 所有的属性值回去过来 数组 // console.log(Object.values(spec)) // 2. 转换为字符串 数组join('/') 把数组根据分隔符转换为字符串 // console.log(Object.values(spec).join('/')) document.querySelector('div').innerHTML = Object.values(spec).join('/') </script> </body> </html>
from()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> <script> // Array.from(lis) 把伪数组转换为真数组 const lis = document.querySelectorAll('ul li') // console.log(lis) // lis.pop() 报错 const liss = Array.from(lis) liss.pop() console.log(liss) </script> </body> </html>
2.3 String
subString()
startWith()
includes()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> //1. split 把字符串 转换为 数组 和 join() 相反 // const str = 'pink,red' // const arr = str.split(',') // console.log(arr) // const str1 = '2022-4-8' // const arr1 = str1.split('-') // console.log(arr1) // 2. 字符串的截取 substring(开始的索引号[, 结束的索引号]) // 2.1 如果省略 结束的索引号,默认取到最后 // 2.2 结束的索引号不包含想要截取的部分 // const str = '今天又要做核酸了' // console.log(str.substring(5, 7)) // 3. startsWith 判断是不是以某个字符开头 // const str = 'pink老师上课中' // console.log(str.startsWith('pink')) // 4. includes 判断某个字符是不是包含在一个字符串里面 const str = '我是pink老师' console.log(str.includes('pink')) // true </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div></div> <script> const gift = '50g的茶叶,清洗球' // 1. 把字符串拆分为数组 // console.log(gift.split(',')) [,] // 2. 根据数组元素的个数,生成 对应 span标签 // const str = gift.split(',').map(function (item) { // return `<span>【赠品】 ${item}</span> <br>` // }).join('') // // console.log(str) // document.querySelector('div').innerHTML = str document.querySelector('div').innerHTML = gift.split(',').map(item => `<span>【赠品】 ${item}</span> <br>`).join('') </script> </body> </html>
2.4 Number
三、综合案例
<script> const goodsList = [ { id: '4001172', name: '称心如意手摇咖啡磨豆机咖啡豆研磨机', price: 289.9, picture: 'https://yanxuan-item.nosdn.127.net/84a59ff9c58a77032564e61f716846d6.jpg', count: 2, spec: { color: '白色' } }, { id: '4001009', name: '竹制干泡茶盘正方形沥水茶台品茶盘', price: 109.8, picture: 'https://yanxuan-item.nosdn.127.net/2d942d6bc94f1e230763e1a5a3b379e1.png', count: 3, spec: { size: '40cm*40cm', color: '黑色' } }, { id: '4001874', name: '古法温酒汝瓷酒具套装白酒杯莲花温酒器', price: 488, picture: 'https://yanxuan-item.nosdn.127.net/44e51622800e4fceb6bee8e616da85fd.png', count: 1, spec: { color: '青色', sum: '一大四小' } }, { id: '4001649', name: '大师监制龙泉青瓷茶叶罐', price: 139, picture: 'https://yanxuan-item.nosdn.127.net/4356c9fc150753775fe56b465314f1eb.png', count: 1, spec: { size: '小号', color: '紫色' }, gift: '50g茶叶,清洗球,宝马, 奔驰' } ] // 1. 根据数据渲染页面 document.querySelector('.list').innerHTML = goodsList.map(item => { // console.log(item) // 每一条对象 // 对象解构 item.price item.count const { picture, name, count, price, spec, gift } = item // 规格文字模块处理 const text = Object.values(spec).join('/') // 计算小计模块 单价 * 数量 保留两位小数 // 注意精度问题,因为保留两位小数,所以乘以 100 最后除以100 const subTotal = ((price * 100 * count) / 100).toFixed(2) // 处理赠品模块 '50g茶叶,清洗球' const str = gift ? gift.split(',').map(item => `<span class="tag">【赠品】${item}</span> `).join('') : '' return ` <div class="item"> <img src=${picture} alt=""> <p class="name">${name} ${str} </p> <p class="spec">${text} </p> <p class="price">${price.toFixed(2)}</p> <p class="count">x${count}</p> <p class="sub-total">${subTotal}</p> </div> ` }).join('') // 3. 合计模块 const total = goodsList.reduce((prev, item) => prev + (item.price * 100 * item.count) / 100, 0) // console.log(total) document.querySelector('.amount').innerHTML = total.toFixed(2) </script>
转换字符串
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> const num = 10 console.log(String(num)) console.log(num.toString()) </script> </body> </html>