gpt4 book ai didi

node.js - Node js中实体类的equals和其他方法

转载 作者:搜寻专家 更新时间:2023-10-31 23:45:19 25 4
gpt4 key购买 nike

我是 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)) {
.....
}

我该怎么做?

最佳答案

像这样的 javascript 并不复杂。您可以简单地在原型(prototype)上定义一个 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 = == 约翰·H。 smith,但那些超越了语言问题。

关于node.js - Node js中实体类的equals和其他方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47061425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com