JavaScript의 hasOwnProperty 메서드 는 주어진 객체에 특정 속성이 있는지 확인하는 데 사용됩니다.
hasOwnProperty 메서드로 확인된 속성 은 해당 개체의 내부에 있습니다. 즉, 사용자가 정의해야 합니다.
hasOwnProperty 에 전달된 속성 이 객체에 존재하면 메서드는 true 를 반환하고 , 그렇지 않으면 false 를 반환합니다 .
예 1:
이 예제에서는 person 객체 를 만들고 name 속성 을 추가 한 다음 hasOwnProperty 를 사용하여 이 속성이 객체의 일부인지 확인합니다.
1var person = {
2 "name": "Brian",
3 "lastName": "Scott"
4};
5
6console.log( person.hasOwnProperty("name") );
출구:
1true
예 2:
이 예제에서는 car 라는 객체를 선언하고 이에 door 라는 속성을 할당 하여 hasOwnProperty 를 사용 하여 이 속성을 확인할 수 있습니다.
1var car = {
2 "doors": 4,
3 "engine": 2.0,
4 "color": "black"
5};
6
7var hasDoor = car.hasOwnProperty("doors");
8
9console.log(hasDoor);
출구:
1true
예 3:
여기서 우리는 hasOwnProperty 메서드가 false 를 반환 하도록 의도적으로 객체의 속성 이름의 철자를 틀리게 만들 것 입니다.
1var shoppingCart = {
2 "fruits": true,
3 "bread": false
4};
5
6var hasFruits = shoppingCart.hasOwnProperty("fruites");
7
8console.log(hasFruits);
출구:
1false
hasOwnProperty 메서드를 사용하는 것이 중요한 이유는 무엇입니까?
JavaScript에서 객체 내에 속성이 존재하는지 확인하기 위해 hasOwnProperty 메서드를 사용하는 것의 중요성을 살펴보겠습니다 .
JavaScript의 모든 것은 객체입니다.
맞습니다. JavaScript로 생성된 모든 요소는 객체로 간주됩니다. 숫자, 텍스트 문자열, 배열 및 기타 JavaScript 데이터 유형은 상위 개체의 속성을 상속합니다.
예 1:
JavaScript의 숫자 데이터 유형은 객체로 간주됩니다.
1var number = 10.22333;
2var otherNumber = number.toPrecision(3);
3
4console.log(otherNumber);
출구:
110.2
예 2:
문자열 데이터 형식도 개체로 간주됩니다.
1var name = "Peter Max";
2var char = name.charAt(2);
3
4console.log(char);
출구:
1t
예 3:
JavaScript의 배열조차도 객체입니다.
1var cars = ["BMW", "Audi", "Aston Martin"];
2
3var carIndexNumber = cars.indexOf("BMW");
4
5console.log(carIndexNumber);
출구:
10
이전 예에서 모든 개체는 기본 개체인 Object의 속성을 상속합니다.
JavaScript의 “in” 명령
새로운 JavaScript 프로그래머는 일반적으로 in 명령 을 사용하여 주어진 객체에 속성이 있는지 확인합니다.
예시:
1var car = {
2 "doors": 2,
3 "engine": 1.2,
4 "color": "yellow"
5};
6
7if ("engine" in car) {
8 console.log("true");
9} else {
10 console.log("false");
11}
출구:
1true
문제는 in 명령 이 포괄적이라는 것입니다. 개체의 모든 속성을 검색합니다. 사용자가 만든 속성과 상위 개체에서 상속된 속성이 검사에 포함됩니다.
프로그래머가 개체 속성이 있는 경우에만 코드를 실행하면 논리 오류가 발생할 수 있습니다.
그러나 프로그래머는 개체의 기본 속성을 확인하고 싶어? 아니면 사용자가 만든 속성입니까?
예시:
1var car = {
2 "doors": 2,
3 "engine": 1.2,
4 "color": "yellow"
5};
6
7if ("toString" in car) {
8 console.log("true");
9} else {
10 console.log("false");
11}
출구:
1true
이전 예에서 in 명령은 true 를 반환 합니다. 즉, 이 속성이 우리가 선언하지 않은 경우에도 toString 속성 이 우리 객체에 있다고 가정합니다 .
toString 속성/메소드 는 상위 개체에서 상속됩니다. 이러한 혼란을 피하기 위해 항상 hasOwnProperty 메소드를 사용하십시오 .
예시:
1var car = {
2 "doors": 2,
3 "engine": 1.2,
4 "color": "yellow"
5};
6
7if ( car.hasOwnProperty("toString") ) {
8 console.log("true");
9} else {
10 console.log("false");
11}
출구:
1false
이제 반환 값은 false 입니다. 이는 앞서 보았듯이 hasOwnProperty 메서드 가 사용자 정의 속성만 검색하기 때문입니다.