gpt4 book ai didi

javascript - JavaScript ES6 中的静态方法和 Angular 2 服务

转载 作者:太空狗 更新时间:2023-10-29 16:54:24 25 4
gpt4 key购买 nike

在使用 Angular 2 和多个计算服务编写应用程序时,我遇到了以下问题:

  1. 我什么时候在应用程序级别提供的 Angular 服务中使用静态?那是胡说八道吗?
  2. 静态方法如何反射(reflect)性能?假设有几个 hundret 对象同时调用同一个静态方法。这个方法是否实例化了不止一次?

这是一个类的快照,它为我提供了多种计算方法并在应用程序级别实例化:

@Injectable()
export class FairnessService {
constructor(){}
private static calculateProcentValue(value: number, from: number): number {
return (Math.abs(value) / Math.abs(from)) * 100;
}
public static calculateAllocationWorth(allocation: Allocation): number {
...
}
}

感谢您的帮助。

最佳答案

  1. 静态 类的方法,与实例 方法不同,属于(可见于)类本身(不是它的实例 ).它们不依赖于类的实例成员,通常会从参数中获取输入,对其执行操作,然后返回一些结果。他们独立行动。

它们在 Angular 服务中确实有意义。有些情况我们不能/实际上不需要使用服务的实例,我们不能/不想对它产生新的依赖,我们只需要访问我们的服务携带的方法. 静态成员进来了。

使用服务中定义的静态方法的例子:

import { FairnessService } from './fairness.service';

export class MyComponent {

constructor() {
// This is just an example of accessing the static members of a class.
// Note we didn't inject the service, nor manually instantiate it like: let a = new A();
let value = FairnessService.calculatePercentValue(5, 50);
let value2 = FairnessService.calculatePercentValue(2, 80);

console.log(value); // => 10
console.log(value2); // => 2.5
}
}
  1. 静态 方法对性能没有影响。正如我们在上面确定的那样,它们不依赖于该类的任何实例,并且调用这些方法绝不会实例化该类。

有关更多信息,在以下位置有很好的解释:http://www.typescriptlang.org/docs/handbook/classes.html

关于javascript - JavaScript ES6 中的静态方法和 Angular 2 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41861092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com