2012-02-22 6 views
32
If(somevar.hasOwnProperty('someProperty')) { 
// do something(); 
} else { 
// do sometingelse(); 
} 

hasOwnProperty('someProperty')의 올바른 사용/설명은 무엇입니까?자바 hasOwnProperty의 속성은 무엇입니까?

somevar.someProperty을 사용하여 somevar 객체의 이름이 someProperty 인 속성이 포함되어 있는지 확인할 수없는 이유는 무엇입니까?

이 경우 어떤 속성입니까?

이 자바 스크립트는 어떤 속성을 확인합니까?

+2

http://stackoverflow.com/questions/2600085/hasownproperty-in-javascript –

+0

내가이 질문을했을 때 나는 html을 확인한 기능이라고 생각했다. 이제 나는 그 객체 나 메소드 내에서 '변수'에 대한 javascript 객체 또는 메소드를 확인하고 있습니다. thnx! – FLY

+0

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/HasOwnProperty –

답변

61

hasOwnProperty은 호출하는 개체에 인수 이름이있는 속성이 있는지 여부를 나타내는 부울 값을 반환합니다. 예 :

var x = { 
    y: 10 
}; 
console.log(x.hasOwnProperty("y")); //true 
console.log(x.hasOwnProperty("z")); //false 

그러나 개체의 프로토 타입 체인은 보지 않습니다.

for...in 구성을 사용하여 개체의 속성을 열거 할 때 유용합니다.

자세한 내용을 보려면 ES5 specification을 항상 좋은 장소로 사용하십시오.

+3

프로토 타입 체인의 보너스 포인트. 그 객체가 호출되지 않았을 때 그 호출이 무엇인지 알아 내려고 시도하고 있습니다 ...그 창문이 아닙니다. –

+0

@KristofferSHansen - 저도 궁금합니다.하지만 질문이 수정되어 현재 객체에 호출 중입니다. 그렇지 않은 경우 오류가 발생합니다. –

+0

나는 물건을 바꾼다고 생각합니다. Chrome의 콘솔에서 실행할 때 오류가 없습니다. –

7

이 확인 :

객체가 지정된 이름 그렇지 않은 경우는 false

객체가 지정된 이름의 속성이있는 경우 hasOwnProperty 메소드가 true를 돌려 가진 속성이 있는지 여부를 나타내는 부울 값을 반환 . 이 메소드는 객체의 프로토 타입 체인에 속성이 있는지 확인하지 않습니다. 속성은 객체 자체의 멤버 여야합니다.

예 :

var s = new String("Sample"); 
document.write(s.hasOwnProperty("split"));      //false 
document.write(String.prototype.hasOwnProperty("split"));   //true 
+0

y - 1?/제가 잘못 이해하고 있습니까? –

+1

당신의 최초 대답이 짧고 완전히 일관성이없는 문장 이었기 때문에 나는 -1을주었습니다. 그 문장은 약간 더 길고 약간 더 일관성이 있지만 완전히 부정확 한 문장으로 업데이트되었습니다. –

+0

@ amnotiam- 그러나 나는 그것의 많은 명확한 지금 생각한다. .. 그 이유는 나의 인터넷 문제 내가 더 게시 할 수 없기 때문에. .......... –

0

그것은 checks if an object has a property. 내가 아는 한 if(obj.prop)과 동일하게 작동합니다.

+3

'obj.prop'가 프로토 타입 체인을 따라 가며'hasOwnProperty'는 –

+3

이 아닙니다. 문제는'prop'가 거짓 값을 가질 때입니다. 'if (obj.prop)'가'false' 일 때'if (obj.hasOwnProperty ('prop'))'는'true'가됩니다. –

1

hasOwnProperty는 문자열 인수를 취하는 일반적인 Javascript 함수입니다. 귀하의 경우 somevar.hasOwnProperty ('someProperty')에서

그것은 (당신이 object.hasOwnProperty를 사용하는 true와 false

function somevar() { 
    this.someProperty= "Generic"; 
    } 

function welcomeMessage() 
{ 
    var somevar1= new somevar(); 
     if(somevar1.hasOwnProperty("name")) 
{ 
alert(somevar1.hasOwnProperty("name"));// it will return true 
} 
} 
1

를 반환 ,,의 somevar 기능이 somepropery가 있거나하지 을 확인

객체 자체를 가질 수 있습니다 - 객체가 열거 재산 페이지이있는 경우 페이지)를 결정하는 prototype으로, 'default'메소드와 속성이 객체의 모든 인스턴스에 할당됩니다. hasOwnProperty는 생성자에서 특별히 설정되었거나 나중에 인스턴스에 추가 된 속성에 대해서만 true를 반환합니다. P이 객체에 대해, 어디서나, 모든 정의 된 경우 p는 속성 이름 문자열로 평가 곳에

는 경우 ( 페이지 instanceof를 객체)을 사용하여 결정합니다.

예를 들어 기본적으로 모든 객체에는 'toString'메소드가 있지만 hasOwnProperty에는 표시되지 않습니다.

0

또한이 간단한 object-hasOwnProperty 개체에 지정된 속성이 있는지 확인하기 위해 부울을 반환하는 재사용 가능한 구성 요소를 작성했습니다. 실제 사용 사례의 동작을보다 잘 이해할 수 있도록 2 개의 예제와 3 개의 테스트가 있습니다.

예 :

hasOwnProperty({foo: 'bar'}, 'foo') // => true 
hasOwnProperty({foo: 'bar'}, 'bar') // => false 

테스트 사용 사례 : 여기

hasOwnProperty() should return false as given object do not contain key `bar` 
hasOwnProperty() should return true as given object contains key `foo` 
hasOwnProperty() should return false if key is null 

그것이 작동하는 방법 : 여기

function hasOwnProperty(obj: {}, prop: string|number): boolean { 
    return Object.prototype.hasOwnProperty.call(obj, prop); 
}; 
3

이다 짧고 정확한 답 : 자바 스크립트에서

, 모든 객체에는 롤빵이 있습니다. 개체에 대한 메타 정보가 포함 된 기본 제공 키 - 값 쌍 for...in 구조체/루프를 사용하여 모든 키 - 값 쌍을 반복 할 때이 메타 정보 키 - 값 쌍을 통해 루프 처리중인 객체를 반복 할 때 (꼭 필요하지는 않음).

enter image description here

hasOwnPropery(property)필터 아웃 사용이 불필요 직접 메타 정보를 통해 반복하고 것은 그 property 사용자 지정된 속성 개체 또는없는 파라미터이다 검사한다. 필터 아웃property이 존재하지 않는 것으로 보입니다. 객체의 프로토 타입 체인 일명 메타 정보에 있음을 의미합니다.

부울 true/false을 기반으로 반환합니다.

var fruitObject = {"name": "Apple", "shape": "round", "taste": "sweet"}; 
 
console.log(fruitObject.hasOwnProperty("name")); //true 
 
console.log(Object.prototype.hasOwnProperty("toString");) //true because in above snapshot you can see, that there is a function toString in meta-information

내가 분명히 희망 : 여기

은 예입니다!

관련 문제