Node js中实体类的Equals和其他方法

时间:2017-11-01 18:29:59

标签: node.js

我是Node js的新手。所以,我有一些与OOP更相关的基本疑问。我已将一个对象定义为

function Person(name, age, address) {
    this.name = name;
    this.age = age;
    this.address = address;
}

现在,如果我想为Person添加方法,比如equals(),hashCode()等,我在哪里可以这样做?

我熟悉JAVA语言,当我们用来定义POJO类时,我们有时也会添加处理它的方法。

最终,我想做类似的事情

var p1 = new Person("person1", 18, "XYZ");
var p2 = new Person("person1", 18, "XYZ");

if(p1.equals(p2)) {
    .....
}

我该怎么做?

1 个答案:

答案 0 :(得分:3)

这样的javascript并不复杂。您只需在原型上定义equals()方法即可。当然,决定两个对象是如何相等的是一个可能具有挑战性的业务逻辑问题。

关于如何开始的简单想法考虑:

function Person(name, age, address) {
    this.name = name;
    this.age = age;
    this.address = address;
}
Person.prototype.equals = function(p) {
    // this ignores things you shouldn't like case sensitivity and string/number conversiosn
    return  this.name === p.name
            && this.age === p.age
            && this.address === p.address
}

var p1 = new Person("Mark", 30, "1234 Main Street")
var p1_1 = new Person("Mark", 30, "1234 Main Street")

var p2 = new Person("Steve", 29, "201 B Street")

p1.equals(p2)
// false

p1.equals(p1_1)
// true

当然,如果您使用真实世界数据(如1234 Main Street === 1234 Main st.John Smith === john h. smith)进行此操作,那么会有很多难以实现的细微之处,但这些数据超出了语言问题。