javascript - 为什么这里需要 static 关键字

标签 javascript class

我正在尝试理解 JavaScript 中的类和类方法。

下面的示例仅当您在 isIE() 方法之前添加关键字 static 时才有效。

<强>1。为什么需要静态关键字?

<强>2。我应该如何更改函数,以便不需要使用静态?

class ieAlert {
  // Method for checking if IE11
  static isIE() {  
    return window.navigator.userAgent.match(/(MSIE|Trident)/);
  }
}
// If the user is using IE11, show the alert
if (ieAlert.isIE()) {
  window.alert("Your browser is outdated!");
}

module.exports = ieAlert;

最佳答案

之所以需要 static 关键字,是因为您要访问类或对象的方法,而无需实例化或创建该类。

例如,如果该方法不是静态的,您会说。

//CREATE NEW INSTANCE
let dog = new Dog()
//ACCESS METHOD
dog.bark()

但是,使用 static 关键字,您可以说。

//ACCESS METHOD WITHOUT        CREATING INSTANCE
 Dog.bark()

无需创建该类的新实例。

您应该了解这两种方法各有利弊。

例如,静态变量只有一个实例,因此对于每个有权访问它的类来说,它的值都是相同的。

因此,如果您想要养 10 只狗,并且每只狗都有不同的品种,您就不会使用静态变量。

这是常识,无论您使用什么编程语言。我建议你找到一个好的 JavaScript 教程。

关于javascript - 为什么这里需要 static 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56923441/

相关文章:

javascript - 使用 javascript 和 json 加载表格时如何为按钮分配多个值

javascript - 如何使用普通 JavaScript (ES6) 处理 ajax 请求?

java - 在 Java 中定义嵌套类/对象/枚举结构的最佳方法是什么?

c++ - 重载 << 运算符错误 C2804 : binary 'operator <<' has too many parameters

javascript - 你如何使用 Canvas 作为一个类?

javascript - 我可以使用 sencha extjs 商店和模型进行 sencha touch 吗?

c# - 在javascript函数中使用asp.net的图像组件

c++ - 删除传递给构造函数的对象指针导致错误

javascript - 使用 vm.runInNewContext 创建类(在 ES6 中强制类表达式而不是类声明)

javascript - 为什么这不起作用?