Advertisement

对ES6 Class中的super关键字进行深入阐述。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
以下记录的是我个人的学习心得:关键字“super”在编程中具有多重含义,它既可以被用作函数调用,也可以作为对象的引用。在两种使用场景下,“super”的用法则截然不同。首先,当“super”被当作函数来调用时,例如在类继承关系中,它会指向父类的构造函数。例如,考虑以下代码片段: ```javascript class A {} class B extends A { constructor() { super(); // 在 ES6 中,子类的构造函数必须执行一次 super 函数。 } } ``` 尽管“super”代表了父类A的构造函数,但其返回值仍然是子类B的实例。具体而言,“super”内部的 `this` 指向的是子类B本身。因此,在上述代码中,`super()` 相当于 `A.prototype.constructor.call(this)`。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 详解 ES6 Class super
    优质
    本文深入探讨了ES6中Class语法中的super关键字的用法和作用,包括其在继承机制中扮演的重要角色以及如何正确使用它来调用父类的方法。 以下是个人的学习笔记:在ES6中,super关键字既可以当作函数使用也可以作为对象来用,并且在这两种情况下其使用方法完全不同。 1. 当作函数使用: 当将super作为函数调用时,在子类构造器内必须至少一次执行该操作。 ```javascript class A {} class B extends A { constructor() { super(); // ES6 规定,子类的构造函数中需要通过super来初始化父类。 } } ``` 需要注意的是,尽管调用`super()`时看起来是在使用父类A的构造器,但实际上返回值是当前子类B的一个实例对象。换句话说,在这里执行`super()`等同于在父原型上直接访问并调用了其构造函数:即相当于`A.prototype.constructor.call(this)`
  • Javavolatile理解(总结篇)
    优质
    本文详细探讨了Java编程语言中的volatile关键字,剖析其工作原理、使用场景及局限性,并通过实例帮助读者全面理解。 volatile关键字不仅在Java语言中有,在许多其他编程语言中也存在,并且它们的用法和语义可能有所不同。本段落主要介绍了Java中的volatile关键字的相关内容,供需要了解该主题的朋友参考。
  • C++Explicit解析
    优质
    本文详细探讨了C++中的explicit关键字,包括其作用、使用场景及注意事项,帮助读者避免构造函数的隐式类型转换陷阱。 `explicit`关键字用于修饰类的构造函数,表明该构造函数只能通过显式调用来使用,并禁止隐式的类型转换。这意味着它仅能在类内部声明构造函数时使用,而不能在外部定义中应用此关键字。其主要作用是防止意外的类型转换。 例如: ```cpp class gxgExplicit { public: int _size; gxgExplicit(int size) { _size = size; } }; // 调用构造函数: gxgExplicit gE1(24); ``` 上述代码中,`explicit`关键字并未被使用。如果在构造函数声明时加上了`explicit`修饰符,则该类的实例化将只能通过显式调用来完成,而不能自动转换类型创建对象。
  • C++Explicit解析
    优质
    本文详细探讨了C++中的explicit关键字,解释其作用、使用场景及其在构造函数和转换操作符中的应用,帮助读者避免隐式类型转换带来的潜在错误。 以下详细介绍了C++中Explicit关键字的用法,需要的朋友可以参考。希望对大家有所帮助。
  • ES6JSclass语法糖
    优质
    本文介绍了JavaScript ES6中的类(Class)特性,解释了它是如何作为函数构造器的一种“语法糖”,使面向对象编程更加简洁易懂。 在JavaScript语言中生成实例对象的传统方式是通过构造函数。ES6为我们提供了一种更接近传统企业级语言的语法糖——类(Class)。使用传统的构造函数创建实例对象的方式如下:首先,构造函数的名字通常以大写字母开头,并且需要使用new运算符来调用;私有属性一般定义在构造函数内部,而方法则添加到原型链上。 ES6引入了“类”这个概念作为生成实例的模板。通过class关键字可以定义一个类: ```javascript class MyClass { constructor() { // 初始化代码 } show() { console.log(Hello, World!); } } ``` 在构造方法中,`this`关键字指向新创建的对象实例,这与传统的构造函数写法是一致的。定义类的方法时无需使用function关键字。 总结来说,ES6中的Class语法糖让面向对象编程更加直观和简洁,并且更接近于其他语言如Java或C#等企业级开发中常见的模式。
  • Javaextends和super详细解析
    优质
    本文深入探讨了Java编程语言中的extends与super关键字,解释了它们在继承机制及多态性实现中的具体应用。适合希望深入了解Java面向对象特性的读者阅读。 本段落详细介绍了Java继承中的extends与super关键字的相关知识点,供需要的读者参考学习。
  • JavaScript ES6CLASS用法详解
    优质
    本教程深入解析了ES6中的CLASS语法,涵盖类的定义、继承及属性方法等核心概念,旨在帮助开发者掌握现代JavaScript面向对象编程技巧。 在ES6之前,我们只能通过原型链来模拟类的概念。然而,class是ES6引入的一个重要特性之一。本段落将详细介绍如何使用ES6中的CLASS,并提供一些参考示例供有兴趣的朋友学习和借鉴。希望大家可以通过这篇文章更好地理解这一语言特性的应用方式。
  • 解析C语言volatile
    优质
    本文详细探讨了C语言中至关重要的volatile关键字,解释其在多线程及内存映射硬件寄存器编程中的作用和应用场景。 一个生动的例子详细解释了在不同的编译环境下声明变量使用Volatile关键字可能会导致不一样的结果。
  • 解析JavaScript ES6模板符串
    优质
    本文章详细探讨了JavaScript ES6中的模板字符串特性,包括插值、多行字符串以及标签模板等功能,并提供了实际应用示例。 在 ES6 中引入了一种新的字符串字面量——模板字符串。除了使用反引号(`)表示外,它们看上去与普通的字符串没有什么区别。最简单的情况下,它们就是普通的字符串:`Ceci nest pas une cha?ne.`。 之所以称其为模板字符串,是因为它为 JavaScript 引入了简单的字符串插值特性,即可以方便优雅地将变量的值插入到字符串中。这种功能在很多场景下都非常有用,比如生成错误提示消息时: ```javascript const message = `Variable ${variableName} is not defined.`; ``` 这样就可以根据需要动态地构造出合适的错误信息了。
  • 于LOOPBACK详解和
    优质
    本文深入探讨了LOOPBACK的概念与应用,详细解释其在网络通信、软件开发中的作用及重要性,并提供实际案例分析。 LOOPBACK是一种网络配置方式,在计算机网络环境中用于测试本机的网络服务或应用程序是否正常工作。当使用LOOPBACK地址(通常是127.0.0.1)进行通信时,数据包不会离开本地主机而是直接由网卡接收并返回给应用层软件,这样可以避免外部干扰和延迟,便于开发者在开发阶段检查程序运行情况。 此外,在网络编程中,可以通过绑定到LOOPBACK地址来监听本机的特定服务端口。例如,在创建一个服务器应用程序时可以选择监听127.0.0.1上的某个端口号而不是所有可用接口(如0.0.0.0),以便测试应用功能而不暴露于外部网络。 总之,LOOPBACK机制在开发和调试过程中非常有用,并且是理解和掌握计算机网络基础知识的重要组成部分。