2017-11-01 7 views
2

私はノードjを初めて使用しています。ですから、私はOOPにもっと関連したいくつかの基本的な疑問を持っています。私はそれを行うことができますどこで、などのequals()、hashCode()メソッドのような人のためのメソッドを追加したい場合は、今すぐ ノードjsのエンティティクラスの等価およびその他のメソッド

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

として一つのオブジェクトを定義していますか?

私はJAVA言語に精通しており、POJOクラスの定義に使用していたときに、それを処理するメソッドを追加することもありました。

結局、私はそれを行うことができますどのようにこの

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

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

ような何かをしたいですか?

+0

nodejsはJavaと似ていませんが、オブジェクトの比較には一意性を定義する必要があります –

+0

https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object-oriented_JSおよびhttps://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes –

答えて

2

このようなもののjavascriptは複雑ではありません。プロトタイプ上で単にequals()メソッドを定義することができます。もちろん、2つのオブジェクトがどのように等しくなっているかを判断することは、困難なビジネスロジックの問題です。検討し始める方法のシンプルなアイデアについては

:あなたは1234 Main Street === 1234 Main st.かとJohn Smith === john h. smithかどうかなどの実世界のデータでこれをやっていた場合があり

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 

は、もちろん、難しい微妙な点がたくさんありますが、それらは言語の問題を超えています。

関連する問題