JS——构造函数

JS中的构造函数

构造函数概念

  • 面向对象编程(Object Oriented Programming,缩写为 OOP)是目前主流的编程范式。它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。

  • 面向对象编程的第一步,就是要生成对象。对象是单个实物的抽象。通常需要一个模板,表示某一类实物的共同特征,然后对象根据这个模板生成。

  • JavaScript 语言使用构造函数(constructor)作为对象的模板。所谓”构造函数”,就是专门用来生成实例对象的函数。它就是对象的模板,描述实例对象的基本结构。

  • 一个构造函数,可以生成多个实例对象,这些实例对象都有相同的结构。都可以使用这个构造函数的属性与方法。

构造函数的实现

  • 构造函数就是一个普通的函数,但是有自己的特征和用法。
构造函数的书写
 function Person(){
            this.name='Jack'
        }

上面代码中,Person就是构造函数。

  • 为了与普通函数区别,构造函数名字的第一个字母通常大写
  • 构造函数的特点有两个。
    1. 函数体内部使用了this关键字,代表了所要生成的对象实例
    2. 生成对象的时候,必须使用new命令
构造函数中的new关键字
  • new命令的作用,就是执行构造函数,返回一个实例对象。
  1. new 就是创造对象的过程
  2. new 也叫做实例化对象的过程
  3. new 创造出来的对象叫做构造函数的 实例对象
  • 构造函数必须有new关键字,也可以说只要用了new关键字,该函数就可以视为构造函数。
		  function Person() {
		  //构造函数体内的属性
            this.name = 'Jack'
        }
		// Person.prototype 原型 上的方法
        Person.prototype = {
            a: function () { 
                console.log('我是一个a方法')
             },
            b: function () { },
            // ...
        }

        var p = new Person()
        console.log(p)
        console.log(p.name)// Jack
        p.a()// 我是一个a方法
  • 实例对象 p
    在这里插入图片描述
  • 上面代码通过new命令,让构造函数Person生成一个实例对象,保存在变量p中。
  • 这个新生成的实例对象,从构造函数Person得到了name属性和 Person.prototype 上的方法。
  • new命令执行时,构造函数内部的this,就代表了新生成的实例对象this.name表示实例对象有一个name属性,值是Jack。实例对象的a方法就是原型上的_proto_: a: f( )console.log(我是一个a方法)

构造函数总结

1. 构造函数的特点

  • 一个构造函数可以使用 new 关键字来创造出若干的实例。

  • 每一个实例都可以使用这个构造函数的属性和方法。

2. 构造函数的创建

  • 属性写在构造函数体内

  • 方法写在构造函数的原型上

  • 方法不是不能写在构造函数体内
    如果你写在构造函数体内,每次 new 的时候会创建一个函数空间,最后就会有若干个一摸一样的函数空间出现,浪费内存空间。

3.构造函数的特殊情况

  • 构造函数体内如果 return 返回值一个基本数据类型, 与new 关键字连用的时候, 得不到你 return 的基本数据类型。
  • 构造函数体内如果 return 返回值是一个复杂数据类型, 构造函数无法创建一个实例对象,不管是否与new关键字连用。 得到的都是 return 的 复杂数据类型。
function Person() {
            this.name = 'Jack'
            this.age = 18
            this.gender = '男'
            
			// return 1
            // return [1, 2, 3]
        }

        Person.prototype = {
            a() { },
            b() { },
            c() { }
        }

        var a = new Person() 
        console.log(a)

正常情况下
在这里插入图片描述
返回一个基本数据类型 return 1 与new关键字连用之后结果不变
在这里插入图片描述
返回一个复杂数据类型 return [1,2,3]
在这里插入图片描述

  • 35
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C++ 默认构造函数是在没有显式定义构造函数的情况下自动生成的特殊成员函数。它通常用于在创建对象时进行初始化操作。默认构造函数无参数,不接受任何实参。当我们通过调用类的构造函数来创建对象时,如果没有提供实参,则编译器会自动调用默认构造函数。 默认构造函数的作用是确保对象的所有成员变量都被正确初始化。例如,如果一个类有一个int类型的成员变量,那么在默认构造函数,可以将该成员变量初始化为0。如果没有默认构造函数,当我们创建对象时,该成员变量可能会未被初始化,导致程序运行时出现意外结果。 另一个重要的地方是,当我们定义了类的其他构造函数时(比如有参数的构造函数),默认构造函数依然会被生成。这是因为在某些情况下,我们可能只想使用默认构造函数来创建对象,而不希望传递实参。此时,默认构造函数就能满足需求。当我们重载构造函数时,可以使用默认参数来实现默认构造函数的功能。 需要注意的是,默认构造函数在一些特殊情况下可能不会被生成。例如,如果我们显式定义了有参数的构造函数,但没有提供默认构造函数,那么编译器将不会自动生成默认构造函数,这意味着我们不能再使用无参的方式来创建对象。 总之,理解C++默认构造函数的作用和用法对于编高质量的代码至关重要。它可以帮助我们确保对象的正确初始化,并且在一些特殊情况下可以提供方便的使用方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值