在 ES6 类 中, static
关键字允许您在类本身上定义一个函数,而不是类的实例。
class MyClass {
static myFunction() {
return 42;
}
}
typeof MyClass.myFunction; // function
MyClass.myFunction(); // 42
// `myFunction()` is a function on `MyClass`, **not**
// instances of `MyClass`
const obj = new MyClass();
obj.myFunction; // undefined
在 JavaScript 中,类是和其他对象一样的对象。 因此,静态允许您在类定义中定义类上的函数。 等效地,您可以将一个函数分配给 MyClass
:
class MyClass {}
MyClass.myFunction = function() {
return 42;
};
MyClass.myFunction(); // 42
this
在静态函数中, this
指类。
class MyClass {
static myFunction() {
return this;
}
}
MyClass.myFunction() === MyClass; // true
静态属性
静态属性,也称为类字段 ,目前是 TC39 的第 3 阶段提案 ,这意味着它们在技术上还不是 JavaScript 语言的一部分。 但是,它们在较新版本的 Google Chrome 中受支持。
class MyClass {
static answer = 42;
}
MyClass.answer; // 42
使用具有非原始值的静态属性时要小心。 如果您将 继承与非原始静态属性一起 ,则从您的类继承的每个类都将具有该对象的相同副本。
class MyClass {
static val = new Object();
}
class MyChildClass extends MyClass {}
MyChildClass.val === MyClass.val; // true
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
请登录后查看评论内容