我是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)) {
.....
}
我该怎么做?
答案 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
)进行此操作,那么会有很多难以实现的细微之处,但这些数据超出了语言问题。