Pol*_*nik 2 comparison object typescript ngfor angular
通过Angular教程(英雄之旅),我偶然发现了两个对象之间的比较.由于这不是一种常见的做法,我已经在类中进行了多次比较并且都返回了false,除非比较的是hero[0]和selectedHero,返回的值是true,假设我们已经分配selectedHero了hero[0].
浏览Heores部分代码,进行比较:链接到StackBlitz
<ul class="heroes">
<li *ngFor="let hero of heroes"
[class.selected]="hero === selectedHero"
(click)="onSelect(hero)">
<span class="badge">{{hero.id}}</span> {{hero.name}}
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
为什么这个比较会恢复正常?究竟是什么在这里进行比较?我还没有找到任何解释.
===正在检查值(如果主题是数字或布尔值),类型和对象引用.如果您创建具有相同属性的2个对象(如下所示),则将返回false:
let a = { test: 'test' };
let b = { test: 'test' };
console.log(a === b); // gives false
Run Code Online (Sandbox Code Playgroud)
因为它不是同一个参考.因此,在您的情况下,selectedHero === hero如果您的2个对象具有相同的引用,则为true.
编辑:
另一个精度是您可以在另一个中复制对象引用:
let a = { test: 'test' };
let b = a;
console.log(a === b); // gives true
Run Code Online (Sandbox Code Playgroud)
然后,如果您更改一个引用的属性,它将同时更改:
let a = { test: 'test' };
let b = a;
a.test = 'foo';
console.log(b.test) // gives foo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |