ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript_javascript スキルにおける連想プロトタイプチェーン属性の特性

JavaScript_javascript スキルにおける連想プロトタイプチェーン属性の特性

WBOY
WBOYオリジナル
2016-05-16 15:15:451135ブラウズ

データ属性:

データ属性には、値の読み取りおよび書き込みが可能なデータ値の場所が含まれます。

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におけるプロトタイプチェーンの属性特性に関する知識ですので、ご参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。