我有一个名为 tax
的类(class).
export class tax {
private _id: string;
private _name: string;
private _percentage: number;`
constructor(id: string = "", taxName: string = "", percentage: number = 0) {
this._id = id;
this._name = taxName;
this._percentage = percentage;
}
public get id(): string {
return this._id;
}
public set id(v: string) {
this._id = v;
}
public get name(): string {
return this._name;
}
public set name(v: string) {
this._name = v;
}
public get percentage(): number {
return this._percentage;
}
public set percentage(v: number) {
this._percentage = v;
}
toString(){
return this.id;
}
}
当我创建该类的 2 个不同对象时
a1: tax = new tax("id","name",4);
a2: tax = new tax("id","name",4);
console.log(a1 === a2); //false
console.log(a1 == a2); //false
当我给出 a1 === a2 时,它应该给出 true。 我必须在类里面做哪些改变才能得到 a1 === a2 ? 在税务类别中我必须做什么?或者我必须在税级中覆盖哪种方法?
最佳答案
您正在比较同一类的两个不同实例。尽管实例中的值相同,但它们是两个完全独立的实体。
例如,如果我们有一个带有单个属性 name
的 People
类。即使世界上有两个人叫John Smith
,他们也是两个完全不同的人。
每个实例都有自己的唯一标识符。
如果您想检查两种税的值是否完全相同,可以一一检查。
console.log(a1.getId() === a2.getId() && a1.getName() === a2.getName() && a1.getPercentage() === a2.getPercentage()) // true
有关比较对象的更多信息可以找到here
关于javascript - typescript 如何比较两个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43634154/