对象进阶

2023/11/19 jses6

# 对象进阶

# 1、创建对象的三种方式

构造函数:

let obj =new Object();
obj.name="john";
1
2
let obj =new Object({name:"john"});
1

字面量:

let obj = {name:"john"}
1

# 1.1 自定义构造函数(构造函数入门):

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

构造函数允许自己构造一个模版来创建类似的对象

构造函数约定:

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

示例

        function Person(name,age,phone){
            this.name=name;
            this.age=age;
            this.phone=phone;
        }
        let man =new Person("john",19,17788889999);
        console.log(man.name);//john
1
2
3
4
5
6
7

说明:

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

# 1.1.1 实例成员&静态成员

实例成员:实例对象的属性和方法都叫实例成员

静态成员:构造函数也就是类的方法和属性,重点是以类为基准,看示例

        function Person(name, age, phone) {
            this.name = name;
            this.age = age;
            this.phone = phone;
        }
        Person.eyes=2;
        Person.eat =function(){console.log("eating...");};
        
        let man = new Person("john", 19, 17788889999);
        console.log(man.eyes);//2
        Person.eat();//eating...
1
2
3
4
5
6
7
8
9
10
11

# 1.1.2 内置构造函数

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

引用数据类型 : 对象

内置构造函数:

  • 引用类型: Object, Array, RegExp, Data等
  • 包装类型: String, Number, Boolean等

示例:

        let str ="john"//等同于 let str =new String("john"),这个构造函数是js内置的,封装了很多方法
        console.log(str.length);//4
1
2

# 1.1.3 Object内置静态方法

# 1. Object.keys()

​ 拿到对象所有的键,并返回一个数组

        let arr=Object.keys(man);
        console.log(arr);//["name","age","phone"]
1
2
# 2. Object.values()

拿到对象所有的值,并返回一个数组

        let arr = Object.values(man);
        console.log(arr); //["john",19,17788889999]
1
2
# 3.Object.assign()

给一个对象添加属性和值,或者说合并两个对象

拷贝一个对象的值传递给另一个对象

第一个参数是接收的对象,第二个是被拷贝的对象

 let o ={gender:"男"};
        Object.assign(o,man);
        console.log(o);//{gender:"男","name": "john","age": 19,"phone": 17788889999}
1
2
3

# 1.1.4 Array的内置实例方法

# 1. reduce()

处理数组累加的情况

reduce(function(上一次的值,当前值){},初始值)

回调函数的返回值会传递给下一次运行时的**”上一次的值“**这个参数

无初始值:

        let arr =[1,4,7,8];
        let total=arr.reduce((prev,current)=>prev+current);
        console.log(total);//20
1
2
3

有初始值:

也就是说第一个回调执行的时候,prev不是空的,而是参数里的值

        let arr =[1,4,7,8];
        let total=arr.reduce((prev,current)=>prev+current,10);
        console.log(total);//30
1
2
3
# 2. find()

遍历数组,返回数组中第一个满足条件的元素的值,否则返回undefined

语法: find(function(当前元素,当前索引,数组本身){}[ , thisArg]),其中回调函数要返回一个布尔值

thisArg:执行回调值指定的this对象

    let arr =[1,4,7,8,"blue"];
        //Find
        let blue=arr.find(item=>item==="blue")
        console.log(blue);//blue
1
2
3
4
# 3. every()

遍历数组,如果所有元素都符合条件就返回true,否则就返回false

语法:every(function(当前元素,当前索引,数组本身){}[, thisArg])

every会遍历数组到结束,或遇到回调返回false。

        let arr =[1,4,7,8];
		let t=arr.every(item=>item>0)
        console.log(t);//true
1
2
3
# 4. join()

没有回调函数,遍历数组,把所有数组元素被转换成字符串连接到一个字符串中

如果一个元素是 undefinednull,它将被转换为空字符串

语法:join([separator])

参数是可选值,用来分割每个元素。

        let spec={size:"40*40",color:"蓝色"}
        console.log(Object.values(spec).join("/"));// 40*40/蓝色
1
2

# 1.1.5 Array的内置静态方法

# 1.Array.from()

把伪数组转化为真数组

# 1.1.6 String 的实例方法

# 1. split()

分割字符串,把他们变成数组。

语法 : split(separator[, limit])

separator描述每个分割应该发生在哪里,可以是 undefined,一个字符串,或者一个有Symbol.split方法的正则表达式

在已经有 limit 个元素时停止分割

你被你指定的第一个参数的字符串会消失

如果传undefined也就是不传,那它也不会给你分割(哪怕你写了第二个参数),给你返回一个数组,里面原原本本的放着这个字符串

        let str ="sunday"
        console.log(str.split("n"));//["su","day"]
1
2
# 2. substring()

方法返回该字符串从起始索引到结束索引(不包括)的部分

语法: substring(indexStart[, indexEnd])

        let str ="sunday"
        console.log(str.substring(3));//"day"
        console.log(str.substring(0,3));//"sun"
1
2
3
# 3.startsWith()

用来判断当前字符串是否以一个给定的子字符串开头,返回true或false

语法 :startsWith(searchString[, position])

第一个参数是期望字符串,第二个是期望的起始位置。

区分大小写

const str1 = 'Sunday';

console.log(str1.startsWith('Sun'));
//  true

console.log(str1.startsWith('Sun', 2));
//  false

1
2
3
4
5
6
7
8
# 4. includes()

确定是否可以在一个字符串中找到另一个字符串

语法 :includes(searchString[, position])

第一个参数是期望字符串,第二个是期望的起始位置,默认为0。

const sentence = 'The quick brown fox jumps over the lazy dog.';

const word = 'fox';

console.log(`The word "${word}" ${sentence.includes(word) ? 'is' : 'is not'} in the sentence`)//  "The word "fox" is in the sentence"
1
2
3
4
5
Last Updated: 2024/8/29 07:25:14