[javascript] JavaScript의 hasOwnProperty

중히 여기다:

function Shape() {
    this.name = "Generic";
    this.draw = function() {
        return "Drawing " + this.name + " Shape";
    };
}

function welcomeMessage()
{
    var shape1 = new Shape();
    //alert(shape1.draw());
    alert(shape1.hasOwnProperty(name));  // This is returning false
}

.welcomeMessage 에 호출 body.onload이벤트 .

기대했다 shape1.hasOwnProperty(name)true를 반환 했지만 false를 반환합니다.

올바른 행동은 무엇입니까?



답변

hasOwnProperty 문자열 인수를받는 일반 JavaScript 함수입니다.

당신이 호출 할 때 shape1.hasOwnProperty(name)당신이 그것을의 값을 전달하는 name그냥 당신이 쓴 경우와 마찬가지로, (존재하지 않는) 변수를 alert(name).

당신은 호출 할 필요가 hasOwnProperty포함 된 문자열을 name다음과 같이 : shape1.hasOwnProperty("name").


답변

hasOwnProperty 속성 이름을 문자열로 예상하므로 shape1.hasOwnProperty("name")


답변

이 시도:

함수 welcomeMessage ()
{
    var shape1 = new Shape ();
    // alert (shape1.draw ());
    alert (shape1.hasOwnProperty ( "name"));
}

JavaScript에서 리플렉션으로 작업 할 때 멤버 개체는 항상 이름으로 문자열로 참조됩니다. 예를 들면 :

for(i in obj) { ... }

루프 반복기 i는 속성 이름과 함께 문자열 값을 보유합니다. 코드에서이를 사용하려면 다음과 같은 배열 연산자를 사용하여 속성을 처리해야합니다.

 for (i in obj) {
   alert ( "obj의 값."+ i + "="+ obj [i]);
 }


답변

hasOwnProperty () 는 객체 키의 유효성을 검사하는 좋은 속성입니다.
예:

var obj = {a:1, b:2};

obj.hasOwnProperty('a') // true


답변