JavaScript 进阶第二天

目录

深入对象

创建对象三种方式

1. 利用对象字面量创建对象

2. 利用 new Object 创建对象

3. 利用构造函数创建对象

构造函数

实例成员&静态成员

内置构造函数

Object

Array

String

Number


深入对象

创建对象三种方式

1. 利用对象字面量创建对象

2. 利用 new Object 创建对象

3. 利用构造函数创建对象

构造函数

构造函数 : 是一种特殊的函数,主要用来初始化对象
通过 构造函数 快速创建多个类似的对象
构造函数在技术上是常规函数。
不过有两个约定:
1. 它们的命名以大写字母开头。
2. 它们只能由 "new" 操作符来执行。
创建构造函数:
说明:
1. 使用 new 关键字调用函数的行为被称为实例化
2. 实例化构造函数时没有参数时可以省略 ()
3. 构造函数内部无需写return, 返回值即为新创建的对象
4. 构造函数内部的 return 返回的值无效, 所以不要写return
5. new Object() new Date() 也是实例化构造函数
实例化执行过程
1. 创建新的 对象
2. 构造函数this指向新的 对象
3. 执行构造函数代码,修改this,添加新的属性
4. 返回新对象

实例成员&静态成员

实例成员:
通过构造函数创建的对象称为实例对象 ,实例对象中的属性和方法称为 实例成员。
说明:
1. 实例对象的属性和方法即为实例成员
2. 为构造函数传入参数,动态创建结构相同但值不同的对象
3. 构造函数创建的实例对象彼此独立互不影响。

 

静态成员:
构造函数的属性和方法被称为 静态成员
说明:
1. 构造函数的属性和方法被称为静态成员
2. 一般公共特征的属性或方法静态成员设置为静态成员
3. 静态成员方法中的 this 指向构造函数本身

内置构造函数

在 JavaScript 中 最主要 的数据类型有 6 种:
基本数据类型:
字符串、数值、布尔、undefined、null
引用类型:
对象
但是,我们会发现有些特殊情况:
其实字符串、数值、布尔、等基本类型也都有专门的构造函数,这些我们称为 包装类型。
JS中几乎所有的数据都可以基于构成函数创建。

Object

Object 是内置的构造函数,用于创建普通对象。
推荐使用字面量方式声明对象 ,而不是 Object 构造函数
学习三个常用静态方法(静态方法就是只有构造函数Object可以调用的)

以前

现在
作用: Object.keys 静态方法获取对象中 所有属性名
语法:
注意: 返回的是一个数组
作用: Object.values 静态方法获取对象中 所有属性值
语法:
注意: 返回的是一个数组
作用: Object. assign 静态方法常用于对象拷贝
语法:
使用: 经常使用的场景 给对象添加属性

Array

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

创建数组建议使用字面量创建,不用 Array构造函数创建
1. 数组常见实例方法-核心方法

作用: reduce 返回函数累计处理的结果, 经常用于求和
基本语法:
参数:
起始值可以省略, 如果写就作为第一次累计的起始值
语法:
累计值参数:
1. 如果有起始值,则以起始值为准开始累计, 累计值 = 起始值
2. 如果没有起始值, 则累计值以数组的第一个数组元素作为起始值开始累计
3. 后面每次遍历就会用后面的数组元素 累计到 累计值 里面 (类似求和里面的 sum )
使用场景:求和运算:

2. 数组常见方法-其他方法

find()

 const arr = [
      {
        name: '小米',
        price: 1999
      },
      {
        name: '华为',
        price: 3999
      },
    ]

    const mi = arr.find(item => item.name === '小米')
    console.log(mi)

答案是

every()

 const arr1 = [10, 20, 30]
    const res = arr1.every(item => item >= 10)
    console.log(res)// true


每个元素都要满足

some()

跟every()一样,满足一个就Ok

2. 数组常见方法- 伪数组转换为真数组
静态方法 Array.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')
    const liss = Array.from(lis)
    liss.pop()
    console.log(liss)
    console.log(lis)

  </script>
</body>

</html>

String

1. 常见实例方法

split 把字符串转换为数组                          和 join() 相反

  const str = '2022-2-2'
    const arr = str.split('-')
    console.log(arr)

substring(截取字符串)

 // 2. 字符串的截取   substring(开始的索引号[, 结束的索引号])
    // 2.1 如果省略 结束的索引号,默认取到最后
    // 2.2 结束的索引号不包含想要截取的部分
    // const str = '今天又要做核酸了'
    // console.log(str.substring(5, 7))

startsWith判断是不是以某个字符开头

 // const str = 'pink老师上课中'
    // console.log(str.startsWith('pink'))

返回一个布尔值

includes判断某个字符是不是包含在一个字符串里面

  const str = '我是pink老师'
    console.log(str.includes('pink')) // true

Number

Number 是内置的构造函数,用于创建数值

常用方法:
toFixed() 设置保留小数位的长度
 // toFixed 方法可以让数字指定保留的小数位数
    const num = 10.923
    // console.log(num.toFixed())
    console.log(num.toFixed(1))// 10.9
    const num1 = 10
    console.log(num1.toFixed(2))// 10.00

    const num2 = 10.123
    console.log(num1.toFixed())// 10 不写的话直接要整数
关于小数的计算精度问题:
0.1 + 0.2 = ?
答案是0.30000000000000004
解决方案: 我们经常转换为整数
(0.1*100 + 0.2*100)/ 100 === 0.3
  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值