중히 여기다:
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