먼저 열거 특성을 이해하십시오
일반적으로 ~ Traversal에 사용됩니다
var a = [1,2,3]; for (var i in a) {console.log (a [i]);} orvar o = {p1 : 1, p2 : 2}; for (var i in o) {console.log (i+'='+o [i]);} // p1 = 1; p2 = 2;<1> 모든 속성이 for ~ in traversal에 표시되는 것은 아닙니다. 예를 들어 (배열) 길이 속성 및 생성자 속성입니다. 표시된 특성을 열거형이라고하며 열거 된 특성은 각 객체에 의해 제공되는 PropertyInumerable () 방법에 의해 결정될 수 있습니다.
<2> 프로토 타입 체인의 각 속성은 열거 가능하다면, hasownproperty ()가 호텔이 객체 자신의 속성인지 프로토 타입 속성인지 여부를 결정하기 위해 표시됩니다.
<3> 모든 프로토 타입 속성의 경우, PropertySenumerable ()은 For ~ in Traversal에서 열거 가능한 것들을 포함하여 False를 반환합니다.
JS 코드 예제
기능 개 (이름, 색) {this.name = name; this.color = color; this.somemethod = function () {return 1;}} dog.prototyp.price = 100; dog.prototype.rating = 3; new dog ( "doggg", "옐로"); newDog) {console.log (prop+'='+newDog [prop]);} // name = doggg // color = yellow // somemethod = function () {return 1;} // price = 100 // rate = 3newdog.hasownProperty ( 'name'); // true; newdog.hasownproperty ( ');고유 한 속성 만 표시하십시오
for (newdog의 var props) {if (newdog.hasownproperty (prop)) {console.log (prop+'='+newdog [prop]);}} newdog.propertyiseNumerable ( 'name'); // truenewdog.propertyisenumerable ( 'sectuctor'); // 거짓참고 : 대부분의 내장 속성 및 메소드는 열거 할 수 없습니다.
프로토 타입 체인의 모든 속성도 열거 할 수 없습니다.
ProductionInumerable ()에 대한 호출이 프로토 타입 체인의 객체에서 나온 경우 해당 객체의 속성을 열거 할 수 있습니다.
newdog.constructor.prototype.propertyiseNumerable ( 'price'); // true
iSprototypeof () : 각 객체가 있습니다. 현재 객체가 다른 객체의 프로토 타입인지를 나타냅니다.
JS 코드 예제
var monkey = {hair : true, feeds : 'bananas', breathes : 'air'}; function human (name) {this.name = name;} human.prototype = monkey; var george = new human ( 'george'); monkey.isprototypof (george); // true.위의 것은 편집기가 소개 한 JS의 HasownProperty (), PropertyIsenumerable () 및 isprototyfof ()입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!