最近在解决问题时,我遇到了在JavaScript类中创建一个属性的要求,该属性需要由所有对象实例共享。在编程世界中,这些类型的属性称为静态属性。
有各种情况下,当你需要一个静态成员属性:
- 计算从特定类创建的对象实例的数量时
- 在类级别而不是对象实例级别等记录某些信息时。
要创建静态属性,您应该知道两件重要的事情:
- JavaScript类不能具有成员属性。您只能使用构造函数创建它
- 与函数构造函数一样,JavaScript类也有一个原型
好吧,如果您是原型的拥护者,那么此时您一定已经猜到了答案。无论如何,让我们向前看实施,
类Foo{ 构造函数(目标) { 这个。目标 = 目标; Foo.prototype.objectcount; } } Foo.prototype.objectcount = 0;
让我们来谈谈Foo类的实现,
- 我们向Foo类原型添加了一个属性
- 在构造函数中递增它,因为每次创建对象时都会调用构造函数
基本上创建一个静态属性成员,添加一个属性类原型对象。现在,创建Foo类的实例,
让f1 =新建Foo(78); console.log(f1.objectcount);// 1 让f2 =新建Foo(45); console.log(f2.objectcount)// 2 让f3 =新建Foo(45); console.log(f3.objectcount)// 2 console.log(f1.objectcount === f2.objectcount);// true console.log(f2.objectcount === f3.objectcount);// true
你现在可以看到objectcount跟踪所有对象的计数。它对于所有对象实例也是相同的,因此,它可以被称为JavaScript类的静态成员属性。
我希望你发现这个快速提示有用。