js高级第二天

一、创建对象的三种方式

<script>
    // 1. 利用字面量创建对象(常用的一种方式)
    const o = {
      name: '佩奇'
    }
    console.log(o)

    // 2. 利用 new Object 创建对象 (了解)
    // const oo = new Object({ name: '佩奇' })
    const oo = new Object()
    oo.name = '佩奇'
    console.log(oo)

    // 3. 利用构造函数创建对象
    // 构造函数:是一种特殊的函数,用来创建对象(并完成初始化对象)
    // 1. 构造函数的2个约定 首字母要大写, 利用new关键字来调用函数
    // function Pig() {

    // }
    // console.log(new Pig)
    // console.log(Pig())
    function Pig(name, age, gender) {
      // this.name 属性   
      // name 是形参也就是属性值
      this.name = name
      this.age = age
      this.gender = gender
      // return 123
    }
    const peiqi = new Pig('佩奇', 6, '女')
    console.log(peiqi)
    const qiaozhi = new Pig('乔治', 3, '男')
    console.log(qiaozhi)

    // 2. 构造函数创建对象说明
    // 2.1 new 关键字 实例化对象
    // 2.2 如果构造函数没有参数,则可以省略小括号
    // 2.3 构造函数里面无需写 return
    // 2.4 new Object()  new Date() 也是在实例化对象
  </script>

二、实例成员&静态成员

  • 实例成员:通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员(实例属性和实例方法)
  <script>
    // 实例成员和静态成员
    // 1. 实例成员:实例对象上的属性和方法属于实例成员
    function Pig(name) {
      this.name = name
    }
    const peiqi = new Pig('佩奇')
    const qiaozhi = new Pig('乔治')
    peiqi.name = '小猪佩奇'  // 实例属性
    peiqi.sayHi = () => {  // 实例方法
      console.log('hi~~')
    }
    console.log(peiqi)
    console.log(qiaozhi)
    console.log(peiqi === qiaozhi)
  </script>
  • 静态成员:构造函数的属性和方法被称为静态成员(静态属性和静态方法)
<script>
  // 2. 静态成员 : 构造函数上的属性和方法称为静态成员
  function Pig(name) {
    this.name = name
  }
  Pig.eyes = 2  // 静态属性
  Pig.sayHi = function () {  // 静态方法
    console.log(this)
  }
  Pig.sayHi()
  console.log(Pig.eyes)  // 2
</script>

三、内置构造函数

  • Object
<script>
    // Object 三种静态方法
    const o = { name: '佩奇', age: 6, gender: '女' }

    // 1. Object.keys()  得到对象所有属性(重点) 返回的是数组
    const key = Object.keys(o)
    console.log(key)

    // 2. Object.values()  得到对象所有属性值(重点)返回的是数组
    const value = Object.values(o)
    console.log(value)

    // 3. Object.assign(目标对象, 源对象)  对象的拷贝   assign 赋值的意思
    const oo = {}
    Object.assign(oo, o)
    oo.name = '小猪佩奇'
    console.log(oo)
    console.log(o)
    // 3.1 注意 拷贝对象之后是两个不同的对象,不会相互影响
  </script>
  • Array
<script>
    // 数组reduce方法
    // arr.reduce(function(上一次值, 当前值){}, 初始值)
    // const arr = [1, 5, 8]

    // 1. 没有初始值 
    // const total = arr.reduce(function (prev, current) {
    //   return prev + current
    // })
    // console.log(total)

    // 上一次值    当前值    返回值  (第一次循环)
    //   1         5         6
    // 上一次值    当前值    返回值  (第二次循环)
    //   6         8        14

    const arr = [1, 5, 8]

    // 2. 有初始值
    const total = arr.reduce(function (prev, current) {
      return prev + current
    }, 10)
    console.log(total)

    // 上一次值    当前值    返回值  (第一次循环)
    //   10         1         11
    // 上一次值    当前值    返回值  (第二次循环)
    //   11         5         16
    // 上一次值    当前值    返回值  (第三次循环)
    //   16         8         24
  


  //1. 推荐使用字面量方式声明数组,而不是 `Array` 构造函数
  //2. 实例方法 `forEach` 用于遍历数组,替代 `for` 循环 (重点)
  //3. 实例方法 `filter` 过滤数组单元值,生成新数组(重点)
  //4. 实例方法 `map` 迭代原数组,生成新数组(重点)
  //5. 实例方法 `join` 数组元素拼接为字符串,返回字符串(重点)
  //6. 实例方法  `find`  查找元素, 返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined(重点)
  //7. 实例方法`every` 检测数组所有元素是否都符合指定条件,如果**所有元素**都通过检测返回 true,否则返回 false(重点)
  //8. 实例方法`some` 检测数组中的元素是否满足指定条件   **如果数组中有**元素满足条件返回 true,否则返回 false
  //9. 实例方法 `concat`  合并两个数组,返回生成新数组
  //10. 实例方法 `sort` 对原数组单元值排序
  //11. 实例方法 `splice` 删除或替换原数组单元
  //12. 实例方法 `reverse` 反转数组
  //13. 实例方法 `findIndex`  查找元素的索引值
  </script>
  • String
<script>
    // 字符串方法split 
    const str = '传智播客'
    // 1. split('分隔符')  把字符串转换为数组
    console.log(str.split(''))
    const str1 = '小米,华为,苹果'
    console.log(str1.split(','))

    // 2. join('分隔符')可以把数组转换为字符串

    // 3. 把传智播客这字符串做一个翻转 变成 客播智传

    // 把字符串转换为数组, 数组里面reverse翻转,再把数组转换为字符串
    console.log(str.split('').reverse())
    console.log(str.split('').reverse().join(''))

    //1. 实例属性 `length` 用来获取字符串的度长(重点)
    //2. 实例方法 `split('分隔符')` 用来将字符串拆分成数组(重点)
    //3. 实例方法 `substring(需要截取的第一个字符的索引[,结束的索引号])` 用于字符串截取(重点)
    //4. 实例方法 `startsWith(检测字符串[, 检测位置索引号])` 检测是否以某字符开头(重点)
    //5. 实例方法 `includes(搜索的字符串[, 检测位置索引号])` 判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false(重点)
    //6. 实例方法 `toUpperCase` 用于将字母转换成大写
    //7. 实例方法 `toLowerCase` 用于将就转换成小写
    //8. 实例方法 `indexOf`  检测是否包含某字符
    //9. 实例方法 `endsWith` 检测是否以某字符结尾
    //10. 实例方法 `replace` 用于替换字符串,支持正则匹配
    //11. 实例方法 `match` 用于查找字符串,支持正则匹配
  </script>
  • Number
  <script>
    // 数字 toFixed 方法
    const num = 12.345
    console.log(num.toFixed(2))  // 12.35
    console.log(num.toFixed(1))  // 12.3
    const num1 = 12
    console.log(num1.toFixed(2))  // 12.00
  </script>
posted @ 2025-07-29 22:44  技术蓝鱼  阅读(10)  评论(0)    收藏  举报