JavaScript的static、this、super关键字介绍

这篇具有很好参考价值的文章主要介绍了JavaScript的static、this、super关键字介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JavaScript的static、this、super关键字介绍

static关键字:

☆ static关键字用于定义类的静态方法和静态属性。

☆ 静态方法是直接与类相关联的方法,不需要实例化类即可调用。

☆ 静态属性是类本身的属性,而不是实例的属性。

☆ 在静态方法内部,不能使用this关键字来引用实例,因为静态方法与特定实例无关。

this关键字:

☆ this关键字指向当前执行代码的对象,它是动态的,根据上下文的不同而变化。

☆ 在类的方法中,this指向调用该方法的实例对象。

☆ 在箭头函数中,this指向定义该函数时的词法环境的this值,而不是动态绑定到实例对象。

☆ 在构造函数中使用this关键字来设置实例的属性。

super关键字:

☆ super关键字用于调用父类的构造函数和方法。

☆ 在子类的构造函数中,可以使用super()来调用父类的构造函数,完成父类的初始化。

☆ 在子类的方法中,可以使用super.method()来调用父类的方法。

☆ 在子类中,通过super关键字可以访问到父类的属性和方法。

static关键字

当在JavaScript中使用static关键字时,可以定义静态方法和静态属性。下面是一些示例来说明如何使用static关键字。

1.定义静态方法:

class MathUtils {
  static add(a, b) {
    return a + b;
  }

  static multiply(a, b) {
    return a * b;
  }
}

console.log(MathUtils.add(2, 3)); // 输出: 5
console.log(MathUtils.multiply(2, 3)); // 输出: 6

在上面的示例中,MathUtils类定义了两个静态方法:add()和multiply()。这些方法可以直接通过类名调用,而不需要实例化类。

2.定义静态属性:

class Circle {
  static PI = 3.14;

  constructor(radius) {
    this.radius = radius;
  }

  get circumference() {
    return 2 * Circle.PI * this.radius;
  }
}

const circle = new Circle(5);
console.log(circle.circumference); // 输出: 31.4
console.log(Circle.PI); // 输出: 3.14

在上面的示例中,Circle类定义了一个静态属性PI,它存储了圆周率的值。在实例方法circumference()中,可以通过Circle.PI来访问静态属性。

需要注意的是,在静态方法内部,不能使用this关键字,因为静态方法与特定实例无关。静态方法只能访问静态属性或调用其他静态方法。

通过使用static关键字,我们可以在JavaScript中创建更具灵活性和可重用性的代码结构。

this关键字

在JavaScript中,this关键字用于指向当前执行代码的对象。下面是一些示例来说明如何使用this关键字。

1.在方法中使用this:

const person = {
  name: 'John',
  greet() {
    console.log(`Hello, my name is ${this.name}.`);
  }
};

person.greet(); // 输出: Hello, my name is John.

在上面的示例中,this关键字指向包含这个方法的对象person。通过this.name,我们可以访问到对象的属性。

2.在构造函数中使用this:

class Rectangle {
  constructor(width, height) {
    this.width = width;
    this.height = height;
  }

  getArea() {
    return this.width * this.height;
  }
}

const rectangle = new Rectangle(5, 3);
console.log(rectangle.getArea()); // 输出: 15

在上面的示例中,构造函数Rectangle使用this来设置实例的属性width和height。在实例方法getArea()中,我们可以通过this来访问实例的属性。

需要注意的是,在箭头函数中,this关键字的行为有所不同。它不会根据调用方式或上下文而变化,而是继承了定义该函数时的词法环境的this值。

3.在事件处理程序中使用this:

  <script>
      document.addEventListener('DOMContentLoaded', function() {
        const button = document.querySelector('button');

        button.addEventListener('click', function() {
          console.log(this); // 输出: <button>Click me</button>
        });
      });
  </script>

  <body>
    <button>Click me</button>
  </body>

在上面的示例中,this指向触发事件的元素,即按钮元素。这样我们可以在事件处理程序中访问和操作该元素。

通过使用this关键字,我们可以在JavaScript中引用当前上下文的对象,从而实现更灵活和动态的编程。

super关键字

在JavaScript中,super关键字用于调用父类的构造函数、方法和访问父类的属性。下面是一些示例来说明如何使用super关键字。

1.调用父类的构造函数:

class Animal {
  constructor(name) {
    this.name = name;
  }
}

class Dog extends Animal {
  constructor(name, breed) {
    super(name); // 调用父类的构造函数
    this.breed = breed;
  }
}

const dog = new Dog('Buddy', 'Golden Retriever');
console.log(dog.name); // 输出: Buddy
console.log(dog.breed); // 输出: Golden Retriever

在上面的示例中,Dog类继承了Animal类,并在子类的构造函数中使用super(name)来调用父类的构造函数并传递参数。

2.调用父类的方法:

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a sound.`);
  }
}

class Dog extends Animal {
  constructor(name, breed) {
    super(name);
    this.breed = breed;
  }

  speak() {
    super.speak(); // 调用父类的speak()方法
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog('Buddy', 'Golden Retriever');
dog.speak(); 
// 输出:
// Buddy makes a sound.
// Buddy barks.

在上面的示例中,Dog类重写了父类的speak()方法,并在子类的speak()方法中使用super.speak()来调用父类的speak()方法。

3.访问父类的属性:

class Animal {
  constructor(name) {
    this.name = name;
  }
}

class Dog extends Animal {
  constructor(name, breed) {
    super(name);
    this.breed = breed;
  }

  getDetails() {
    console.log(`Name: ${this.name}, Breed: ${this.breed}`);
  }
}

const dog = new Dog('Buddy', 'Golden Retriever');
dog.getDetails(); // 输出: Name: Buddy, Breed: Golden Retriever

在上面的示例中,Dog类通过super(name)来访问父类Animal的属性name。

通过使用super关键字,我们可以在JavaScript中实现继承和访问父类的构造函数、方法和属性。文章来源地址https://www.toymoban.com/news/detail-594527.html

到了这里,关于JavaScript的static、this、super关键字介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JS】JavaScript中的this关键字

    目录 this是什么? this的指向 ①全局环境 ②构造函数 ③对象的方法 this的四类调用方式 ①作为对象方法调用 ②纯粹的函数调用 ③作为构造函数调用 ④使用apply、call、bind调用 举例说明 JavaScript  this  指的是它所属的对象。 它拥有不同的值,具体取决于它的使用位置:

    2024年02月14日
    浏览(46)
  • this 之谜揭底:从浅入深理解 JavaScript 中的 this 关键字(二)

    系列首发于公众号『前端进阶圈』 ,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。 调用位置 在理解 this 的绑定过程之前,首先要理解 调用位置 : 调用位置就是函数在代码中被调用的位置(而不是声明的位置) 。 通常来说,寻找调用位置就是寻找

    2024年02月08日
    浏览(48)
  • 什么是原型链(Prototype Chain)?它在JavaScript中有什么作用?请解释一下JavaScript中的“this”关键字的含义和用法。

    原型链(Prototype Chain)是一种在JavaScript中创建对象的方式,它允许我们通过继承来扩展对象的属性和方法。 在原型链中,每个对象都有一个原型对象(也称为“原型”或“ proto ”),该对象继承了其父对象的属性和方法。当我们在一个对象上定义一个属性或方法时,如果该

    2024年02月11日
    浏览(59)
  • Java关键字super解释

    又是看了一大堆文字介绍,非常系统和官方,理解要费半天劲,所以总结一下super它到底有啥用,还有代码演示也会放出来,这里使用的IDE为idea 还是先官方一下 在java中,super表示超类(就是我们俗称的父类),当子类需要引用父类的字段时,我们就可以使用super.FieldName. 因此

    2024年02月07日
    浏览(47)
  • static关键字和final关键字

    在java的中,static和final是两个必须掌握的。static和final用法多样,且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面将依次介绍static和final。注意,某些场景下,staic和final可以联合使用

    2024年02月09日
    浏览(61)
  • java面向对象——继承以及super关键字

    在 同⼀类 中,存在⽅法名相同,参数列表不同(个数、类型或顺序不同)的⽅法互为重载。 在 继承关系 中,⼦类声明⼀个继承⾃⽗类的⽅法名相同、参数列表相同,返回值类型⼀致,访问修饰符相同或 变⼤,抛出异常相同或缩⼩的⽅法称为重写。 重载是编译时多态,重写

    2024年02月12日
    浏览(39)
  • static关键字

    作者简介: zoro-1,目前大一,正在学习Java,数据结构等 作者主页: zoro-1的主页 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 在Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对 象,是所有对象所共享的。 不属于某个具体的对象,是类

    2024年02月14日
    浏览(40)
  • 每天一个知识点 - 了解和使用super关键字

    super是一个,super和this很类似 可以使用 super() 函数访问父类的构造函数,从而委托父类完成一些初始化的工作 如果子类重写了父类的中某个方法的实现,可以通过使用 super 来引用父类的方法实现        super( )函数是用于调用父类的一个方法,指向了当前对象自

    2024年02月21日
    浏览(50)
  • 类的继承和super关键字的使用(JAVA)

    目录 继承 super   子类的构造方法 final 所有的OOP语言都会有三个特征: 封装(点击可跳转) 继承 多态(点击可跳转) 为什么会有继承呢?可以先看下面的例子:         上面这两个类中的代码很相似因为它们只有最后一个方法不同其它的都相同,这样定义不但导致代码

    2024年02月14日
    浏览(42)
  • C# -- static 关键字

    一、static static ,用于修饰类,字段,属性,方法,构造方法等。被 static 修饰的类称之为“静态类”; 被 static 修饰的成员称之为“静态成员”,被修饰过的成员分别称为:静态字段,静态属性,静态方法,静态构造方法。 二、静态字段 1.概念 被 static

    2023年04月19日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包