Angular 模板上是否有只读函数?
假设我有以下模板Angular 模板上是否有只读函数?,angular,Angular,假设我有以下模板 <div>{{myvalue.ID}}</div> 或 或者甚至做类似的事情 <div>{{myvalue.getID()}}</div> readonly getID= (): string => this.ID; {{myvalue.getID()} readonly getID=():string=>this.ID; 这看起来像是一个真正的机会 我的问题是,与直接变量引用相比,get和readonly函数是否变
<div>{{myvalue.ID}}</div>
或
或者甚至做类似的事情
<div>{{myvalue.getID()}}</div>
readonly getID= (): string => this.ID;
{{myvalue.getID()}
readonly getID=():string=>this.ID;
这看起来像是一个真正的机会
我的问题是,与直接变量引用相比,get和readonly函数是否变慢了
我有一些变量要显示给用户,但要保持它们的私有性,因为我不希望任何人修改它们(在代码和模板中)。我相信没有其他方法可以做到这一点,但是,这会影响性能吗
将函数用于绑定引用是不好的设计
原因如下:
- 每次运行角度变化检测(CD)时,都会创建对该函数的新引用。因为一旦返回,函数引用就是GC
- 此外,每次运行CD时都会调用该函数。对于简单的getter/setter函数来说,这似乎不多。但是,如果函数具有更复杂的实现,则可能会产生重大影响。最终使CD变得沉重
- 插值语法之间的任何代码都会按角度进行计算,从而导致对CD cycle的函数调用
getter
函数。但通常通过设计,需要在模板中公开的变量应该是公共的。由于编译后,模板也会转换为类以提高性能。
get ID() {
return this._ID;
}
<div>{{myvalue.getID()}}</div>
readonly getID= (): string => this.ID;