JS进阶(二):构造函数&数据常用函数


一、构造函数

1. 深入对象

1.1 创建对象的三种方式

 <script>
   // 1. 利用对象字面量创建对象
   const o = {name:'佩奇'}
   
   // 2. 利用new object创建对象
   const o = new Object({name:'佩奇'})
   console.log(o) // {name:'佩奇'}
   
   // 3. 利用构造函数创建对象
   // 构造函数: 1.命名以大写字母开头  2.只能由'new'操作符来执行
   function Student(uname,age){
     this.name = uname
     this.age = age
   }
   const a1 = new Student('张三',18) //new关键字调用函数被称为实例化
   console.log(a1) //{age: 18,name: "张三"}
</script>

1.2 构造函数

  <script>
    实例化执行过程:
	    1.创建新空对象
		2.构造函数this指向新对象
		3.执行构造函数代码,修改this,添加新的属性
		4.返回新对象
    function Goods(name,price,count){
      this.name = name
      this.price = price
      this.count = count
    }
    const m1 = new Goods('家电1',1999,20)
    const m2 = new Goods('家电2',3999,59)
    const m3 = new Goods('家电3',1888,100)
    console.log(m1)
  </script>

1.3 实例成员&静态成员

实例成员:通过构造函数创建的对象为实例对象,实例对象上的属性和方法属于实例成员

  <script>
    // 1. 实例成员
    function Student(name){
      this.name = name
    }
    const s1 = new Student('student1')
    const s2 = new Student('student2')
    // 构造函数创建的实例对象 彼此独立互不影响(s1修改name属性/添加方法,不会影响s2)
    s1.name = '张三'     // 实例属性
    s1.sayHi = () => {  // 实例方法
      console.log('hi')
    }
  </script>

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

  <script>
    // 2. 静态成员:构造函数上的属性和方法称为静态成员
    function Student(){
    }
    Student.age = '18'           // 静态属性
    Student.sayHi = function(){  // 静态方法
      console.log(this) // this指向构造函数Student
    }
  </script>

2. 内置构造函数

2.1 Object

三个常用静态方法(静态方法是只有构造函数Object可以调用的)

  <script>
    const o = {uname:'student',age:18}
    // 1.获取所有的属性名
    console.log(Object.keys(o))  //返回数组['uname', 'age']
    // 2.获取所有的属性值
    console.log(Object.values(o))  //返回数组['student', 18]
    // 3.Object.assign静态方法常用于对象拷贝
    const obj = {}
    Object.assign(obj,o)
    console.log(obj) //  {uname: 'student', age: 18}

    // 可以理解为: 添加新的属性/合并
    Object.assign(o,{Gender: '女'})
    console.log(o) //  {uname: 'student', age: 18, Gender: '女'}
  </script>

2.2 Array

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

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

      // 2. 有初始值
      const total1 = arr.reduce(function(prev,current){
        return prev + current
      },10)
      console.log(total1)  //23

      // 3.箭头函数的写法
      const total2 = arr.reduce((prev,current) => prev + current, 10)
      console.log(total2)  //23
  </script>
2.2.2 find
  <script>
    // 数组find方法
    // 类似于筛选,主要是查找元素
    const arr = [
      {
        name: '品牌一',
        price: '1999'
      },
      {
        name: '品牌二',
        price: '3999'
      }
    ]
    const s = arr.find(item => item.name == '品牌一')
    console.log(s) //  {name: '品牌一',price: '1999}
  </script>
2.2.3 其他

Array.from() 把伪数组转为真数组
find every findIndex some splice join sort等可查文档了解学习
文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array

2.3 String

方法说明
length用来获取字符串的长度
split('分隔符')用来将字符串拆分成数组
substring(需要截取的第一个字符的索引[,结束的索引号])用于字符串截取
startsWith(检测字符串[,检测位置索引号])检测是否以某字符开头
includes(搜索的字符串[,检测位置索引号])判断一个字符串是否包含在另一个字符串中,根据情况返回true或false

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值