JS进阶-构造函数创建对象

创建对象的三种方式

1.利用对象字面量创建对象obj={}

2.利用new Object创建对象obj=new Object({})

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

构造函数

是一种特殊的函数,主要用来初始化对象,在技术上就是常规函数。

使用场景:常规的{...}语法允许创建一个对象。比如我们创建了佩奇的对象,继续创建乔治的对象还需要重新写一遍,此时可以通过构造函数来快速创建多个类似的对象。

    function Pig(name, age, gender) {
      this.name = name
      this.age = age
      this.gender = gender
    }
    const Peppa = new Pig('佩奇', 6, '女')
    const Grorage = new Pig('乔治', 3, '男')

两个约定:

1.它们的命名以大写字母开头。

2.它们只能由“new”操作符来执行。

说明:

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

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

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

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

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

实例化执行过程

说明:

1.创建新空对象

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

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

4.返回新对象

实例成员&静态成员

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

说明:

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

2.构造函数创建的实例对象彼此独立互不影响,实例成员当前实例对象使用

    function Pig(name) {
      this.name = name
    }
    const Peppa = new Pig('佩奇')
    Peppa.name = '小猪佩奇'//实例属性
    Peppa.sayHi = () => {//实例方法
      console.log('hi')
    }

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

说明:

1.静态成员只能构造函数来访问

2.静态方法中的this指向构造函数

比如Date.new()、Math.PI、Math.random()

    function Person(name) {
      //省略实例成员
    }
    Person.eyes = 2//静态属性
    Person.walk = function () {//静态方法
      console.log("人都会走路")
    }

构造函数实现封装

js面向对象可以通过构造函数实现的封装。

缺点:存在浪费内存的问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值