首頁 >web前端 >js教程 >JavaScript中關聯原型鏈屬性特性_javascript技巧

JavaScript中關聯原型鏈屬性特性_javascript技巧

WBOY
WBOY原創
2016-05-16 15:15:451135瀏覽

資料屬性:

資料屬性包含一個資料值的位置,在這個位置可以讀取和寫入值。

4個描述的行為特性:

writable 表示能否修改屬性的值。預設為true

Enumerable 表示能否過過for in迴圈回傳屬性是否可以列舉。

configuralbe 表示是否能過來delete刪除屬性從來重新定義屬性,能否修改其配置。

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中關聯原型鏈屬性特性的相關知識,希望對大家有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn