深入对象&内置构造函数——学习笔记

1.深入对象

1.1 创建对象三种方式

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

2.利用 new Object 创建对象

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

1.2 构造函数

构造函数: 主要用来初始化对象

使用场景: 常规的创建对象是只创建一个对象。如果我们创建了佩奇的对象,还需要创建乔治的对象,其属性都是一样的,但还需要重新写一遍,此时就可以通过构造函数快速创建多个元素

  • 构造函数在技术上是常规函数。

不过有两个约定: 1. 它们的命名以大写字母开头。 2. 它们只能由 "new" 操作符来执行

说明: 1. 使用 new 关键字调用函数的行为被称为实例化

            2. 实例化构造函数时没有参数时可以省略 ()

            3. 构造函数内部无需写return,返回值即为新创建的对象

            4. 构造函数内部的 return 返回的值无效,所以不要写return

            5. new Object() new Date() 也是实例化构造函数

总结:

1. 构造函数的作用是什么?怎么写呢?

 构造函数是来快速创建多个类似的对象  大写字母开头的函数

2. new 关键字调用函数的行为被称为?

 实例化

3. 构造函数内部需要写return吗,返回值是什么?

 不需要  构造函数自动返回创建的新的对象

实例化执行过程

 说明:

1. 创建新对象   只要new了,就会创建一个新对象

2. 构造函数this指向新对象    this指向 new的这个对象

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

4. 返回新对象

1.3 实例成员&静态成员

实例成员:

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

说明:

1.实例对象的属性和方法即为实例成员

2.为构造函数传入参数,动态创建结构相同但值不同的对象

3.构建函数创建的对象彼此独立互不影响

静态成员

构造函数的属性和方法被称为静态成员

说明:

1.构造函数属性和方法被称为静态成员

2.一般公共特征的属性或方法静态成员设置为静态成员

3.静态成员方法中的this 指向函数本身

1. 什么是实例成员?

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

2. 什么是静态成员?

 构造函数的属性和方法被称为静态成员


 2.内置构造函数

在JavaScript中最主要的数据类型有6种:

基本数据类型:字符串,数值,布尔,undefined,null

引用类型(复杂数据类型):对象

但是,有些特殊情况:

// 普通字符串
const str = 'andy'
console.log(str.length)  // 4


const str = 'pink'
 // JS 底层完成,把简单数据类型包装为了引用数据类型(复杂数据类型)
const str = new String('pink')  //构造函数 实例化

其实字符串,数值,布尔 等基本类型也有专门的构造函数,这些我们称之为 包装类型

JS中几乎所有的数据都可以基于构成函数创建

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

包装类型:String, Number, Boolean 等

2.1 Object

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

推荐使用字面量方式声明对象,而不是 Object 构造函数

补充:

let user = {}             // “字面量”的语法
let user = new Object     // “构造函数”的语法

Object.keys 静态方法

作用:获取对象中所有的属性(键)

语法:

注意:返回的是一个数组

Object.values 静态方法

作用:获取对象中所有的属性值

语法:

注意:返回的是一个数组

Object.assign 静态方法

作用: 常用于对象拷贝

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

语法:

const o = { name: '佩奇', age: 6 }
const obj = {}
Object.assign(obj, o)  // 拷贝对象 把 o 拷贝给 obj (即 把小括号里面的第一个看成是容器,把第二个的内容拷贝到第一个里面)
console.log(obj)   //{ name: '佩奇', age: 6 }

1. 什么是静态方法?  只能给构造函数使用的方法 比如 Object.keys()

2. Object.keys()方法的作用是什么 ?

 获取对象中所有属性(键)

3. Object.values()方法的作用是什么 ?

 获取对象中所有属性值(值)

2.2 Array

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

 

1.数组常见实例方法:

方法作用说明
forEach遍历数组不返回,用于不改变值,经常用于查找打印输出值
filter过滤数组筛选数组元素,并生成新数组
map迭代数组返回新数组,新数组里面的元素是处理之后的值,经常用于处理数据
reduce累计器返回函数累计处理的结果,经常用于求和

reduce 方法

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

使用场景:

循环过程:

    const arr = [{
      name: '张三',
      salary: 10000
    }, {
      name: '李四',
      salary: 10000
    }, {
      name: '王五',
      salary: 10000
    },
    ]

    //  计算薪资案例
    const total1 = arr.reduce((prev, current) => {
      return prev + current.salary
    }, 0)
    console.log(total1)

    // reduce循环过程:
    // 上一次值      当前值         返回值
    //    0         10000          10000(第一次遍历)
    //  10000       10000          20000(第二次遍历)
    //  20000       10000          30000(第三次遍历)

    // 需求:  每个人涨薪30%, 当月支出多少薪资
    const total2 = arr.reduce((prev, current) => prev + current.salary * 1.3, 0)
    console.log(total2)

2.数组常用方法- 伪数组转换为真数组

静态方法 Array.from()

<body>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
  <script>
    const lis = document.querySelectorAll('ul li')  //返回一个伪数组
    // console.log(lis)
    const liss = Array.from(lis)  //将伪数组转换为真数组

    // 真数组可以使用数组方法,伪数组不能使用
    liss.pop()  //删除最后一个元素
    console.log(liss)
  </script>
</body>

2.3 String

在 JavaScript 中的字符串、数值、布尔具有对象的使用特征,如具有属性和方法

之所以具有对象特征的原因是字符串、数值、布尔类型数据是 JavaScript 底层使用 Object 构造函数“包装”来的,被 称为包装类型

1.常见的实例方法

  • 43
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ 默认构造函数是在没有显式定义构造函数的情况下自动生成的特殊成员函数。它通常用于在创建对象时进行初始化操作。默认构造函数无参数,不接受任何实参。当我们通过调用类的构造函数来创建对象时,如果没有提供实参,则编译器会自动调用默认构造函数。 默认构造函数的作用是确保对象的所有成员变量都被正确初始化。例如,如果一个类有一个int类型的成员变量,那么在默认构造函数中,可以将该成员变量初始化为0。如果没有默认构造函数,当我们创建对象时,该成员变量可能会未被初始化,导致程序运行时出现意外结果。 另一个重要的地方是,当我们定义了类的其他构造函数时(比如有参数的构造函数),默认构造函数依然会被生成。这是因为在某些情况下,我们可能只想使用默认构造函数来创建对象,而不希望传递实参。此时,默认构造函数就能满足需求。当我们重载构造函数时,可以使用默认参数来实现默认构造函数的功能。 需要注意的是,默认构造函数在一些特殊情况下可能不会被生成。例如,如果我们显式定义了有参数的构造函数,但没有提供默认构造函数,那么编译器将不会自动生成默认构造函数,这意味着我们不能再使用无参的方式来创建对象。 总之,理解C++默认构造函数的作用和用法对于编写高质量的代码至关重要。它可以帮助我们确保对象的正确初始化,并且在一些特殊情况下可以提供方便的使用方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值