js进阶_day02

目录

1.深入对象

1.1创建对象三种方式

1.2实例成员&静态成员

2.内置构造函数

2.1 Object

2.2 Array

2.2.1数组常见实例方法-核心方法

2.2.2数组常见实例方法-其它方法

2.2.3数组常见方法-伪数组转换为真数组

2.3 String

2.3.1常见实例方法

2.4 Number

目录

1.深入对象

1.1创建对象三种方式

1.2实例成员&静态成员

2.内置构造函数

2.1 Object

2.2 Array

2.2.1数组常见实例方法-核心方法

2.2.2数组常见实例方法-其它方法

2.2.3数组常见方法-伪数组转换为真数组

2.3 String

2.3.1常见实例方法

2.4 Number


1.深入对象

1.1创建对象三种方式

(1)利用对象字面量创建对象:

const obj = {
    name: '白敬亭'
}

(2)利用new Object创建对象:

const obj = new Object({ name: 'bjt' })
console.log(o) //{name: 'bjt'}

(3)利用构造函数创建对象:

  • 构造函数:是一种特殊的函数,主要用来初始化对象
  • 使用场景:常规的{...}语法允许创建一个对象。比如我们创建了白敬亭的对象,继续创建刘亦菲的对象还需要重新写一遍,此时通过构造函数快速创建多个类似的对象
  • 构造函数语法:大写字母开头的函数
  • 创建构造函数:
// 创建一个Person 构造函数
        function Person(name, age) {
            this.name = name  //第一个name是对象的属性  第二个是形参
            this.age = age
        }
        //console.log(new Person('白敬亭', 25))
        //console.log(new Person('刘亦菲', 32))

        const boy = new Person('白敬亭', 25)
        console.log(boy)

说明:

  1. 使用new关键字调用函数的行为被称为实例化
  2. 实例化构造函数时没有参数时可以省略()
  3. 构造函数内部无需写return,返回值即为新创建的对象
  4. 构造函数内部的return返回的值无效,所以不要写return
  5. new Object()  new Date() 也是实例化构造函数
  • 实例化执行过程(重点:面试题)

说明:

  1. 创建新对象
  2. 构造函数this指向新对象
  3. 执行构造函数代码,修改this,添加新的属性
  4. 返回新对象

1.2实例成员&静态成员

实例成员:

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

// 1.实例成员:实例对象上的属性和方法属于实例成员
        function Person(name) {
            this.name = name
        }
        const boy = new Person('白敬亭')
        const girl = new Person('刘亦菲')
        boy.name = '吴磊' //实例属性
        boy.sayHi = () => { //实例方法
            console.log('hello')
        }
        console.log(boy)
        console.log(girl)
        console.log(boy === girl) //false

说明:

  1. 为构造函数传入参数,创建结构相同但值不同的对象
  2. 构造函数创建的实例对象彼此独立互不影响

静态成员:

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

// 2.静态成员
        // 构造函数
            function Person() {
                // 省略实例成员
            }
            // 静态属性
            Person.uname = '白敬亭'
            Person.age = 25
            console.log(Person.uname) 
            console.log(Person.age)
            // 静态方法
            Person.sayHi = function () {
                console.log('白敬亭很帅')
                //this指向Person
                console.log(this)
            }
            Person.sayHi()

说明:

  1. 静态成员只能构造函数来访问
  2. 静态方法中的this指向构造函数

比如 Date.now()  Math.PI  Math.random()

2.内置构造函数

2.1 Object

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

//通过构造函数创建普通对象
const user = new Object({ name: '白敬亭', age: 25 })

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

  • 作用:Object.keys静态方法获取对象中所有属性(键)
  • 语法:
const obj = {name: 'bjt', age: 25}
// 1.获得所有的属性名
console.log(Object.keys(obj)) //返回数组 ['name', 'age']
  • 注意:返回的是一个数组

  • 作用:Object.values静态方法获取对象中所有属值
  • 语法:
const obj = {name: 'bjt', age: 25}
// 1.获得所有的属性值
console.log(Object.values(obj)) //返回数组 ['bjt', 25]
  • 注意:返回的是一个数组

  • 作用:Object.assign静态方法常用于对象拷贝
  • 语法:
const obj = {name: 'bjt', age: 25}
// 3.拷贝对象  把obj拷贝给arr
const arr = {}
Object.assign(arr, obj)
console.log(arr) //{name: 'bjt', age: 25}

//应用场景
Object.assign(obj, {sex: '男'})
console.log(obj) //{name: 'bjt', age: 25, sex: '男'}
  • 使用场景:给对象添加属性

2.2 Array

2.2.1数组常见实例方法-核心方法

方法作用说明
forEach遍历数组不返回数组,经常用于查找遍历数组元素
filter过滤数组返回新数组,返回的是筛选满足条件的数组元素
map迭代数组返回新数组,返回的是处理之后的数组元素,想要使用返回的新数组
reduce累计器返回累计处理的结果,经常用于求和等
  • 作用:reduce返回累计处理的结果,经常用于求和等
  • 基本语法:
// 数组reduce方法 实现求和
        // arr.reduce(function(上一次的值, 当前值){}, 初始值)
        const arr = [1, 5, 8]

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

        // 2.有初始值
        const result = arr.reduce(function(prev, current) {
            return prev + current
        }, 10) //10为初始值
        console.log(result) //24
    
        // 3.箭头函数写法
        const result = arr.reduce((prev, current) => prev + current, 6)
        console.log(result) //20
  • reduce执行过程:
  1. 如果没有起始值,则上一次值以数组的第一个数组元素的值
  2. 每一次循环,把返回值给作为下一次循环的上一次值
  3. 如果有起始值,则起始值作为上一次值

2.2.2数组常见实例方法-其它方法

2.2.3数组常见方法-伪数组转换为真数组

静态方法Array.from()

// Array.from() 把伪数组转换成真数组
        const lis = document.querySelectorAll('ul li')
        // console.log(lis)
        const liss = Array.from(lis)
        liss.pop()
        console.log(liss)

2.3 String

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

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

2.3.1常见实例方法

        // 1.split把字符串转换为数组  join()把数组转换成字符串
        const str = 'red,green'
        const arr = str.split(',')
        console.log(arr) //['red', 'green']

        const arr1 = ['red', 'green']
        const str1 = arr1.join(',')
        console.log(str1) //red,green

        // 2.字符串的截取   substring(开始的索引号[, 结束的索引号])
        // 2.1如果省略了 结束索引号 默认取到最后
        const str2 = '白敬亭刘亦菲吴磊赵今麦'
        console.log(str2.substring(6)) //吴磊赵今麦
        // 2.2结束的索引号 不包含想要截取的那部分
        console.log(str2.substring(0, 6)) //白敬亭刘亦菲

        // 3.startsWith(searchString[, 开始查找的地方])判断是否以某个字符开头 返回布尔类型
        const str3 = '白敬亭觉得自己很帅,我也觉得 hhh'
        console.log(str3.startsWith('白敬亭')) //true
        console.log(str3.startsWith('敬亭')) //false
        console.log(str3.startsWith('我')) //false
        console.log(str3.startsWith('很帅', 7)) //true

        // 4.includes(searchString[, 开始查找的地方]) 判断某个字符是不是包含在一个字符串里面
        const str4 = '吴磊也很handsome'
        console.log(str4.includes('handsome')) //true

2.4 Number

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

常用方法:

toFixed()设置保留小数位数的长度

//数值类型
const price = 12.345
//保留两位小数 四舍五入
console.log(price.toFixed(2)) //12.35

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值