속성이 존재하면 부동산이 참으로 반환되고 존재하지 않으면 거짓. 간단 해 보입니다. 그러나 그것의 유용성은 간단한 점검을 넘어선 것입니다. 몇 가지 예를보고 싶습니까?
예 1 : 대상의 직접 소유권
우선, 직접 속성을 확인하기 위해 IN 연산자를 사용하는 기본 예를 보자.
여기, 우리는 브랜드와 연도 부동산이있는 자동차 객체가 있습니다. 자동차에서 '브랜드'를 사용하면 브랜드 속성이 객체에 직접 존재하므로 결과는 사실입니다. 이 속성이 정의되지 않았기 때문에 카로의 '모델'은 거짓을 반환합니다.
이 유형의 점검은 존재하지 않는 속성에 액세스하려고 할 때 오류를 피하는 데 좋습니다. 존재하지 않는 속성에 액세스하려고했고 코드를 깨뜨린 적이 있습니까? 나는 이미! ?
'propriedade' in objeto;
예 2 : 프로토 타입에서 상속 된 특성
이제, 운영자가 프로토 타입에서 상속 된 특성을 감지하는 방법
이 경우, 사람 객체에는 Tostring 속성이 직접적으로 가지지 않지만이 기능은 Object.Prototype에서 상속됩니다. 운영자는 이것을 볼 수 있고 사실을 반환 할 수 있습니다.
이것이 유용한 이유는 무엇입니까?
때로는 상속 된 기능이 객체에서 사용할 수 있는지 확인할 수도 있습니다. 이것은 더 복잡한 상황에서 당신을 절약 할 수 있습니다.
const carro = {
marca: 'Toyota',
ano: 2020
};
console.log('marca' in carro); // true
console.log('modelo' in carro); // false
예 3 : HasownProperty와 비교
이제 속성을 확인하는 다른 방법 인 HasownProperty 방법을 비교해 봅시다. 상속 된 것들을 무시하고 부동산이 물체에 직접 정의되었는지 확인합니다.
hasownproperty 메소드는 Tostring에 대해 False를 반환합니다. 한편, IN 운영자는 상속 된 속성을 고려하기 때문에 true를 반환합니다.
언제 hasownproperty를 사용 해야하는지 ine를 사용해야합니까?
답변은 선임 개발자에게 무엇이든 물었을 때 가장 많이 이야기되는 것입니다.
직접 또는 상속 여부에 관계없이 속성을 확인하려면
사용 hasownproperty는 프로토 타입에서 상속 된 것들을 무시하고 속성이 객체에 직접 정의되었는지 확인 해야하는 경우 사용하십시오.
IN 운영자는 부동산의 기원에 대해 걱정할 필요가 없을 때 훨씬 더 실용적이지만 놀이터에 자리를 잡고 있으므로 어느 곳에서 어떤 목적을 필요로하는지 알아야합니다. .
const pessoa = {
nome: 'Ana'
};
console.log('toString' in pessoa); // true