当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《JavaScriptES6中的静态方法和Angular2服务》经验,为你挑选了1个好方法。

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

    我何时在应用程序级别提供的Angular服务中使用static?那是胡说八道吗?

    静态方法如何反映性能?让我们说几个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> Seid Mehmedo..:

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
    }
}

2)静态方法对性能没有影响.正如我们上面已经确定的那样,它们不依赖于类的任何实例,并且调用这些方法绝不会实例化该类.

有关更多信息,请参阅:http://www.typescriptlang.org/docs/handbook/classes.html

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有