Javascript: '静态成员'
Javascript: Use case for 'static members'
本文关键字:静态成员 Javascript 更新时间:2023-09-26
"实例成员"和共享"类"成员之间的区别对我来说是显而易见的,使用一个或另一个的时间也是如此。但是我最近遇到了"静态成员"的概念,在Javascript中,它只是构造函数本身的方法/属性,通过this
对任何实例都不可用。为了清晰起见,以下是我所说的:
var Constructor = function() {
// Private instance members
var private = 'I am private';
// Public instance members
this.public = 'I am public';
};
// Shared class members
Constructor.prototype.shared = 'I am shared';
// So-called 'static' member
Constructor.static = 'I am static';
var f = new Constructor();
f.private; // undefined
f.public; // 'I am public'
f.shared; // 'I am shared'
f.static; // undefined
就像我说的,前三者的目的和区别是显而易见的。然而,什么时候应该使用静态成员呢?什么时候Foo.bar()
比仅仅使它成为类的共享方法更好:Foo.prototype.bar()
?
我理解原型链,所以明显的区别是静态成员不是实例原型链的一部分——我想这在某些应用程序中可能很重要。但这不是问题所在。问题是,创建这种"静态成员"的一个(或多个)好的、真实的例子是什么?
有一个(或更多)创建这样的"静态成员"的好例子吗?
语言本身就有一些很好的例子。例如(还有比这两个更多的):
Array.isArray([]); // true
Object.keys(someObj); // Returns array of key identifiers
静态属性对于提供与不依赖于实例的"类型"(上面示例中的数组或对象)相关的功能非常有用。
静态属性适用于需要一个在对象的所有实例中通用的值的情况。作为一个简单的例子,您可以让Constructor.numberOfTimesInstantiated
在每次调用new Constructor
时增加1。
相关文章:
- Javascript静态成员
- 什么是上下文中静态类型javascript的示例,以更好地进行单元测试
- 如何访问实例上的静态成员
- 类的方法 - 静态成员
- 使用静态 HTML 或静态 DOM Javascript 设计页面
- 调用对象成员 - JavaScript
- CMIS11.1浏览器绑定:如何仅使用静态HTML+JavaScript显示文件夹的内容
- 在JavaScript中声明私有静态成员变量
- 如何在AS3或JavaScript中访问类的静态成员的名称?
- 静态函数Javascript
- 每个类单独的继承静态成员
- 静态成员继承的解决方法
- 动态vs静态编译器(JavaScript)
- 如何在javascript中获得一些类的所有静态成员的列表
- 使用另一个文件覆盖静态成员
- Date对象:创建时设置静态时间(Javascript)
- 类有静态成员' name '时出现类型错误
- 我可以将静态HTML/Javascript/jQuery文件添加到wordpress中吗
- javascript中的静态成员
- Javascript: '静态成员'