打字稿如何比较两个对象?

时间:2017-04-26 12:24:53

标签: javascript typescript

我有一个名为tax的课程。

    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时,它应该是真的。 什么更改我必须在我的班级做,所以它会给a1 === a2? 我在税务课上要做什么?或者我必须在税级中覆盖哪种方法?

1 个答案:

答案 0 :(得分:2)

您正在比较同一班级的两个不同实例。即使实例中的值相同,它们也是两个完全独立的实体。

例如,如果我们要使用单个属性People的{​​{1}}类。即使世界上有两个人称为name,他们也是两个完全分开的人。

每个实例都有自己唯一的标识符。

如果您想检查两种税是否具有完全相同的值,您可以逐一检查它们。

John Smith

有关比较对象的更多信息,请参见here