Rumah  >  Artikel  >  hujung hadapan web  >  Ciri atribut rantai prototaip bersekutu dalam kemahiran JavaScript_javascript

Ciri atribut rantai prototaip bersekutu dalam kemahiran JavaScript_javascript

WBOY
WBOYasal
2016-05-16 15:15:451115semak imbas

Atribut data:

Atribut data mengandungi lokasi nilai data yang nilainya boleh dibaca dan ditulis.

4 ciri tingkah laku yang diterangkan:

boleh ditulis menunjukkan sama ada nilai atribut boleh diubah suai. Lalai adalah benar

Enumerable menunjukkan sama ada harta yang dikembalikan melalui gelung untuk dalam boleh dikira.

configuralbe menunjukkan sama ada atribut boleh dipadamkan dan ditakrifkan semula, dan sama ada konfigurasinya boleh diubah suai.

nilai mengandungi nilai data atribut ini. Apabila membaca nilai atribut, baca dari lokasi ini.

Apabila menulis nilai atribut, simpan nilai baharu di lokasi ini. Nilai lalai untuk ciri ini adalah benar.

<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>

Bagaimana untuk menghitung sifat Apakah perbezaan antara sifat terhitung dan prototaip?

Kod demo adalah seperti berikut:

<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>

Kandungan di atas ialah pengetahuan tentang ciri atribut rantai prototaip yang berkaitan dalam JavaScript yang diperkenalkan oleh editor saya harap ia akan membantu anda.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn