> 웹 프론트엔드 > JS 튜토리얼 > JavaScript_javascript 기술의 연관 프로토타입 체인 속성 특성

JavaScript_javascript 기술의 연관 프로토타입 체인 속성 특성

WBOY
풀어 주다: 2016-05-16 15:15:45
원래의
1128명이 탐색했습니다.

데이터 속성:

데이터 속성에는 값을 읽고 쓸 수 있는 데이터 값의 위치가 포함됩니다.

4가지 행동 특성 설명:

writable은 속성 값을 수정할 수 있는지 여부를 나타냅니다. 기본값은 true

Enumerable은 for in 루프를 통해 반환된 속성을 열거할 수 있는지 여부를 나타냅니다.

configuralbe는 속성을 삭제하고 재정의할 수 있는지 여부와 해당 구성을 수정할 수 있는지 여부를 나타냅니다.

value에는 이 속성의 데이터 값이 포함됩니다. 속성 값을 읽을 때 이 위치에서 읽으십시오.

속성 값을 작성할 때 이 위치에 새 값을 저장하세요. 이 기능의 기본값은 true입니다.

<script>
function Foo(){}
Foo.prototype.z = 
var obj = new Foo()
obj.x = 
alert("x" in obj) //=>true x是obj对象的自有属性
alert("z" in obj) //=>true z是obj原型上继承来看属性
//hasOwnProperty 必须是对象上的自有的属性才返回true
alert(obj.hasOwnProperty("x")) //true x是obj对象上的自有属性
alert(obj.hasOwnProperty("z")) //false z是obj原型上继承来的属性,不是他的私有属性
alert(Foo.prototype.hasOwnProperty("z")) //=>true z是原型上自有的属性,所以返回true
alert(Object.prototype.hasOwnProperty("toString"))//=>toString 是顶级对象上的自有属性,所以返回true
//prpertyisEnumeralbe 的意思是必是对象上的自有属性而且要以是枚举的,但是对象的可枚举属性Enumeralbe是true,才能返回true
alert(obj.propertyIsEnumerable("x")) //true x是obj对象上可枚举的属性
alert(obj.propertyIsEnumerable("z")) //false z是obj原型上的属性,不是自有属性,则不可以枚举
alert(Foo.prototype.propertyIsEnumerable("z")) //true x是原型上的自有属性,所以可以枚举
</script>
로그인 후 복사

속성을 어떻게 열거하나요? 열거된 속성과 프로토타입의 차이점은 무엇인가요?

데모 코드는 다음과 같습니다.

<script>
function Foo(){}
Foo.prototype.age = 
var obj = new Foo()
obj.name = "ziksang"
obj.addr = "上海"
obj.telephone = 
for(var p in obj){ //使用FOR IN 可以枚举出自身的属性和原型上的属性
console.log(p)
}
console.log(Object.keys(obj)) //使用Object.keys(obj)只可以枚举Obj对象上自身的属性
console.log(Object.getOwnPropertyNames(obj)) //Object.getOwnPropertyNames(obj)是列出Ojb对象上自身的属性名,与枚举不相关,但是又类似枚举,大家要注意区分
</script>
로그인 후 복사

위 내용은 편집자가 소개한 JavaScript의 연관된 프로토타입 체인 속성 특성에 대한 지식입니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿