美文网首页
二、构造函数

二、构造函数

作者: 幸福幸福幸福 | 来源:发表于2017-02-13 21:45 被阅读8次
构造函数

我们可以通过构造函数的方式来创建对象
使用构造函数我们可以提前定义所有的实例化对象共有的属性
eg:


使用构造函数的另外一个好处:它可以在创建对象时接收一些参数。来生成一些某个对象特殊的属性。
eg:


依照惯例,我们应该将构造函数的首字母大写,以便显著的区别于其他一般函数。另外,如果我们在调用一个构造函数时忽略了new操作符,尽管代码不会出错,但他可能会很怪异。因为他的this指向了全局对象

构造器属性(constructor)

每个对象都有一个constructor指向创建这个对象的构造函数
当我们创建对象时,实际上同时也赋予了该对象一种特殊的属性----构造器属性(constructor propetry)。该属性实际上是一个指向用于创建该对象的构造函数的引用。如下图


由于构造器属性(constructor)所引用的是一个函数,因此我们也可以利用它来创建一个其他的新对象,也就是无论对象h2有没有被创建,我们都可以用它来创建一个新对象


另外,如果对象是通过对象文本标识法创建的,那么他就是由内建构造器Object()函数所创建的,也就是他的构造函数是Object():


函数也是对象,函数的constructor指向Function()


instanceof操作符(实例)

通过instanceof操作符,我们可以测试一个对象是不是由某个指定的构造器函数所创建的,即该对象是否是该构造函数的实例:


返回对象的函数

除了使用new操作符来调用构造器函数之外,我们也可以不使用new操作符,只使用一般的函数来创建对象。我们只需要把对象作为函数的返回值就可以了:



需要注意,此时a的constructor是Object()函数,a并不是A的实例

再看这种情况:构造器函数同时返回对象


可以看到c看上去是通过new C()得来的,然而构造器返回的不再是包含属性a的this对象,并且c的构造函数并不是C,对象c里面也没有一个属性a。c的实例函数是Object。但是,也只有在函数的返回值是一个对象时才会发生,如果我们返回的不是一个对象,该构造器将会照常返回this


相关文章

  • Kotlin中类的定义

    Kotlin中定义类也是使用class关键字 基本格式 构造函数主构造函数二级构造函数 构造函数分为主构造函数和二...

  • Kotlin学习笔记——基础语法篇之类和对象

    类的构造 Kotlin类的写法 Kotlin类的构造函数分为主构造函数和二级构造函数 主构造函数的特点——函数名为...

  • Handler-MessageQueue-Looper 源码阅读

    Handler 构造函数 构造函数一 构造函数二 其他构造函数,最终会调用上面两个构造函数中的一个。 四个重要的成...

  • Kotlin学习笔记-class

    一、类的构造函数 在Kotlin中,允许有一个主构造函数和多个二级构造函数(辅助构造函数)。其中主构造函数是类头的...

  • C++面向对象高级编程(上)-第二周-博览网

    第二周 三大函数:拷贝构造,拷贝赋值,析构 字符串的构造函数,拷贝构造函数, 拷贝构造函数和拷贝赋值函数没有自主定...

  • kotlin类的构造函数和属性

    一、 类的构造函数和属性 二、主构造函数中定义属性 2.2: 三、主构造函数和次构造函数 四、构造参数有默认值的情况

  • C++ 构造函数与析构函数

    构造函数与析构函数 OOP第二课 1、构造函数 1.1 构造函数具有一些特殊的性质 1.2 定义构造函数的一般形式...

  • 构造函数二

    先看一个例子: 函数的prototype对象上有一个constructor属性,这个属性的默认值是当前函数。至于o...

  • 二、构造函数

    构造函数 我们可以通过构造函数的方式来创建对象使用构造函数我们可以提前定义所有的实例化对象共有的属性eg: 使用构...

  • Swift构造函数-重载构造函数(二)

    重载构造函数 Swift 中支持函数重载,同样的函数名,不一样的参数类型 注意事项 如果重载了构造函数,但是没有实...

网友评论

      本文标题:二、构造函数

      本文链接:https://www.haomeiwen.com/subject/mfvtwttx.html