JavaScript进阶 第二天

  • 深入对象
  • 内置构造函数

一. 深入对象

  • 创建对象三种方式
  • 构造函数
  • 实例成员&静态成员

1.1 创建对象三种方式

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

const o = {
   'name': '哈哈'
}

② 利用new Object 创建对象

const o = new Object({ name: '哈哈' })

③ 构造函数创建对象

1.2 构造函数

① 构造函数:是一种特殊的函数,主要用来初始化对象

② 使用场景:常规的{...} 语法允许创建一个对象,可以使用构造函数快速创建多个类似的对象

③ 约定:

  • 命名以大写字母开头
  • 只能由 new 操作符来执行

④ 写法:

  • 使用new关键词调用函数的行为被称为实例化
  • 实例化构造函数没有参数时可以省略()
  • 构造函数内部无需写return,返回值即为新创建的对象
  • 构造函数内部的return返回的值无效,所以不要写return
  • new Object()  new Date() 也是实例化构造函数
function Pig (uname, age) {
    this.name = uname
    this.age = age
}
const p = new Pig('佩奇', 6)
const q = new Pig('乔治', 3)

⑤ 实例化执行过程

  • 创建新的空对象
  • 构造函数this指向新对象
  • 执行构造函数代码,修改this, 添加新的属性
  • 返回新对象

 1.3 实例成员&静态成员

 ① 实例成员

  • 通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员
  • 为构造函数传入参数,创建结构相同但值不同的对象
  • 构造函数创建的实例对象彼此独立互不影响
function Pig (name) {
    this.name = name
}
const peiqi = new Pig('佩奇')
// 1.实例对象上的属性和方法称为实例成员
peiqi.sayHi = () => {
    console.log('hi')
}
console.log(peiqi)

② 静态成员

  • 构造函数的属性和方法被称为静态成员(静态属性和静态方法)
  • 静态成员只能构造函数来访问
  • 静态方法中的this指向构造函数
Pig.eyes = 2
console.log(Pig.eyes)

Pig.sayHi = function () {
    console.log(this)
}
// 静态成员调用
Pig.sayHi()

二.内置构造函数

  • Object
  • Array
  • String
  • Number

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

 ②  引用类型:对象

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

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

 ⑤ 包装类型:String, Number, Boolean 等

2.1 Object

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

const o = new Object({ name: '哈哈' })

② 三个静态方法

(1)获取所有属性名:Object.keys, 返回的是一个数组

const o = {uname:'pink', age: 18}
// 1.获取所有属性名
console.log(Object.keys(o))

(2)获取所有的属性值:Object.values

console.log(Object.values(o))

(3)拷贝对象: Object.assign(目标,拷贝对象)

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

const oo = {}
Object.assign(oo, o)
console.log(oo)


// 追加一个新的属性
Object.assign(o, {gender: '女'})

 2.2 Array

 Array是内置的构造函数,用于创建数组, 建议使用字面量创建,不用Array构造函数创建

1. 实例方法

  •  reduce 返回累计处理的结果,经常用于求和
  • 基本语法
arr.reduce(function(){}, 起始值)
arr.reduce(function(上一次值, 当前值){}, 初始值)
  • 参数

     ① 没有初始值

const total = arr.reduce(function (pre, current) {
    return pre + current
})

     ②  有初始值

const total = arr.reduce(function (pre, current) {
    return pre + current
}, 10)

    ③ 箭头函数写法

const total = arr.reduce((pre, current) => pre + current, 10)
console.log(total)

   ④ reduce的执行过程

  • 如果没有初始值,则上一次值是数组的第一个元素
  • 每一次循环,把返回值给作为下一次循环的上一次值
  • 如果有起始值,则起始值作为上一次值 
2.其他方法
编号方法含义
1join数组元素拼接为字符串,返回字符串
2find查找元素,返回符合测试条件的第一个数组值,如果没有符合条件的就返回undefined
3every检测数组所有元素是否都符合指定条件,如果所有元素都通过检测返回true, 否则返回false
4some检测数组中的元素是否满足指定条件,如果数组中有元素满足条件返回true
5concat合并两个数组,返回生成新数组
6sort对原数组单元值排序
7splice删除或替换原数组单元
8reverse反转数组
9findIndex查找元素的索引值

  • find方法使用举例:
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 re = arr.find(item => item.name === '小米')
console.log(re)
  •  every方法:每一个是否都符合条件,如果都符合,返回true, 如果有一个不符合,返回false
const arr1 = [10, 20, 30]
const flag = arr1.every(item => item >= 20)
console.log(flag)
  • some方法
const arr1 = [10, 20, 30]
const flag = arr1.some(item => item >= 40)
console.log(flag)
3.数组静态方法
  • 把伪数组转换为真数组
const lis = document.querySelectorAll('ul li')
// lis.pop()   // 伪数组无法使用数组的方法
const liss = Array.from(lis)
liss.pop()
console.log(liss)

2.3 String

编号方法含义
1length实例属性,用来获取字符串的长度
2split(’分隔符‘)用来将字符串拆分成数组
3substring(需要截取的第一个字符的索引,[, 结束的索引号)用于字符串截取
4startswith(检测字符串[, 检测位置索引号]) 检测是否以某字符开头
5includes(搜索的字符串[, 检测位置索引号])判断一个字符串是否包含在另一个字符串中,根据情况返回true或false
6toUpperCase 将字母转换成大写
7toLowerCase用于将字母转换成小写
8indexOf检测是否包含某字符
9endsWith检测是否以某字符结尾
10replace用于替换字符串,支持正则匹配
11match用于查找字符串,支持正则匹配

// 1.split 字符串转换为数组和join相反
const str = 'pink,red'
const arr = str.split(',')
console.log(arr)

// 2.字符串截取
const str = 'hello'
// 不包含结束的索引号
console.log(str.substring(2, 3))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值