2016-07-26 3 views
2

파이썬에서는 클래스에 __eq__ 메서드를 정의하여 ==이 무시할 수 있습니다.Javascript에서 ==가하는 것을 무시할 수 있습니까?

Javascript에서 비슷한 작업을 수행 할 수 있습니까? 그렇다면 어떻게해야할까요?

기본적으로 JavaScript를 무시할 수 없다면 자바 스크립트는 ==을 실행할 때 두 개의 개체가 같은 주소에 있는지 확인합니다. 주소를 어떻게 직접 얻을 수 있습니까?

오랫동안 작성한 코드를 디버깅하려고하기 때문에이 모든 것을 묻습니다. 내가 알 수있는 한 두 객체는 ​​동일하지만 ==false을 반환합니다. 이유를 찾으려고 노력하고있어 ... 어쩌면 ==가 어딘가에 대체되었는지 궁금하네요 (하지만 큰 코드베이스이고 무엇을 검색해야할지 모르겠다) 아니면 객체가 복제되어 있는지, 그래서 존재한다면 내가 말할 수있는 한 똑같은 것에도 불구하고 다른 주소에서. 주소를 얻는 방법을 아는 것은 그 이론을 확인하는 데 도움이되며 문제를 찾아내는 데 앞장서 야합니다.

+0

JavaScript에서 연산자를 재정의 할 수 없습니다. 두 개의 객체에서'=='또는'==='를 사용하고 있다면 그것들이 같은 참조 인 경우'true'를 반환합니다. – JLRishe

+0

개체는 동일하지만 실제로 메모리의 동일한 개체는 아닙니다. 두 번 확인하는 한 가지 방법은 하나의 값이있는 속성을 추가하여 다른 속성에 표시되는지 확인하는 것입니다. 그렇지 않으면, 그들은 다른 대상입니다. – Whothehellisthat

+0

여기에 : https://stackoverflow.com/q/10539938/632951 – Pacerier

답변

3

일반적으로는 아닙니다. JS는 연산자 오버로딩이나 연산자와 같은 메소드를 허용하지 않습니다.

은, 따라서 행동을 자신의 클래스에 대한 재정에 영향을 미치는 내부적 toString 또는 valueOf 전화를 특정 사업자가 있습니다.

+1

흥미 롭습니다. 그것은'=='에 적용됩니까? – ArtOfWarfare

+0

@ArtOfWarfare 가끔 있습니다. '==와의 비교를 위해 다른 피연산자 유형 쌍이 강제 변환되는 방식을 설명하는 [추상 평등 비교] (http://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison)를 참조하십시오 '때때로 ToSrimitive (http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive) 연산을 사용하여 때로는 'valueOf' 또는'toString'을 호출합니다. 그러나 객체 대 객체 비교의 경우,'=='는 신원 비교를 직접 지시합니다 ("이 객체들은 실제로 같은 객체입니까?"). – apsillers

+0

@ArtOfWarfare 때때로 apsillers가 정교화 한 것처럼. 사양을 검토하고 어떤 운영 업체가 필요한지 확인해야하지만, 작업 중 (미안)하는 동안 약간 확장해야합니다. – ssube

0

아니요, JavaScript에서는 연산자를 직접 재정의 할 수 없습니다.

관련 문제