주사위의 개발일지
  • [Javascript] hasOwnProperty 함수 알아보자 (크라임씬 법원 살인사건에서 다잉메세지로 범인 찾기)
    2024년 02월 21일 02시 34분 10초에 업로드 된 글입니다.
    작성자: 주사위 clice
    반응형

     

     

    hasOwnProperty 함수의 기능

     
    객체, 문자열 등 대상이 특정 속성을 가지고 있는지 판단하는 함수이다. 
    있는지 없는지  '판단'하는 함수이니까 반환값이 참/거짓으로 나온다.  (Boolean 값으로 반환된다)
     
     
     

    함수 사용 방법

     
    대상.함수('찾을대상') 으로 사용한다
    Variable.hasOwnProperty('Property') 로 사용한다.
     
     

    예제


    예제를 한번 살펴보자

    //첫번째 예제
    var actor1='주현영'
    var actor2='주만년'
    var actor3='주변호'
    var actor4='주집착'

     
    배우 4명의 이름이 위와 같다.
    이름은 순서대로 주현영, 주만년, 주변호, 주집착이다. 
     
    이때, 이름이 '주현영'인지 확인하고 싶다.
     
    그러면 actor.hasOwnProperty('주현영') 으로 확인하면 된다

    //첫번째 예제
    console.log(actor1.hasOwnProperty('주현영')) //True
    console.log(actor2.hasOwnProperty('주현영')) //False
    console.log(actor3.hasOwnProperty('주현영')) //False
    console.log(actor4.hasOwnProperty('주현영')) //False

     
     
     
     

    객체 예제(크라임씬: 법원 살인사건)

     
    일반적인 문자열 뿐만 아니라 객체에서도 사용 가능하다
     
    크라임씬 리턴즈를 참고해서 문제를 만들어보자!(스포없음)

    살인사건이 일어났다.
    주변호, 안기자, 키보안. 세 명의 용의자가 있다.

     
     
    먼저 주변호, 안기자, 키보안이라는 세 명의 용의자에 관한 객체를 생성해보자
     

    // 두 번째 예제
    
    const suspect1 = {
      name: '주변호',
      age: 45
      gender: 'female'
      job: 'lawyer'
    };
    
    
    const suspect2 = {
      name: '안기자',
      age: 32
      gender: 'female'
      job: 'reporter'
    };
    
    const suspect3 = {
      name: '키보안',
      age: 45
      gender: 'male'
      job: 'sheriff'
    };

     
    이때 피해자가 마지막에 남긴 이 다잉 메세지가 발견 되었다.
    메세지는 'she...' 라고 쓴 단어였다.
     
     
    첫 번째 추리: 범인이 여자다 (she)

    // 두 번째 예제
    console.log(suspect1.hasOwnProperty('female')) //True
    console.log(suspect2.hasOwnProperty('female')) //True
    console.log(suspect3.hasOwnProperty('female')) //False

    첫번째, 두번째 용의자로 범인이 좁혀졌다
     
     
     
    두 번째 추리: she는 sheriff를 쓰려던 것이다. 범인이 보안관(sheriff)이다

    // 두 번째 예제
    console.log(suspect1.hasOwnProperty('sheriff')) //True
    console.log(suspect2.hasOwnProperty('sheriff')) //True
    console.log(suspect3.hasOwnProperty('sheriff')) //False

    세번째 용의자로 범인이 좁혀졌다
     
    suspect1, suspect2, suspect3 를 배열에 넣고 for문을 돌릴수도 있다
     

    // 두 번째 예제
    
    // 객체들을 배열에 넣는다
    const suspects = [suspect1, suspect2, suspect3];
    
    // for 루프
    for (let i = 0; i < suspects.length; i++) {
        console.log(`suspect${i + 1}.hasOwnProperty('female'):`, suspects[i].hasOwnProperty('female'));
    }

     
     
    그렇다면 진짜 범인은?
    크라임씬 리턴즈 5화: 법원 살인사건에서 확인해보자!
     
     
     
     
     
     
     
    참고로 sheriff의 뜻은 보안관은 맞는데, 미국에서 별 뱃지 달고, 말 타고 다니는 그런 보안관이다.
    키보안이랑은 관련 없다. 문제를 위해서 코드를 저렇게 적었을 뿐이지 키보안은 법원의 보안경비이다.
     
    크라임씬 리턴즈에서도 she라는 다잉 메세지는 발견되지 않는다!
     
     
    roll the dice
    clice 클라이스의 개발일지 입니다

    반응형
    댓글