ホームページ  >  記事  >  ウェブフロントエンド  >  js でオブジェクトをコピーし、そのすべての属性と対応する値を取得する方法 JavaScript スキル

js でオブジェクトをコピーし、そのすべての属性と対応する値を取得する方法 JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 17:19:011356ブラウズ

次の js オブジェクトなど、js 内のオブジェクトをコピーする方法。

このオブジェクトの属性をすべて知っている場合は、新しいオブジェクトを作成して、各属性に値を割り当てることができますが、知らない場合はどうすればよいでしょうか。同じ内容のオブジェクトを作成するにはどうすればよいですか?

コードをコピー コードは次のとおりです:

var obj={colkey: "col" 、colsinfo: "NameList" }

最も簡単な方法は、for in を使用することです、

たとえば、obj2 は obj とまったく同じ属性を持ちます
コードをコピーします コードは次のとおりです。

var obj2=new Object(); )
{
var name=p;//属性名
var value=obj[p];//属性に対応する値
obj2[name]=obj[p]; >}


実際、このメソッドには特定の制限があります。重要なのは、for in in js にはオブジェクトのすべてのプロパティが対象となるのではなく、列挙可能なプロパティのみが対象となるということです。たとえば、tostring() など、js コアによって定義されたメソッドは列挙可能ではありませんが、コード内で定義されたプロパティはすべて列挙可能です (特別に非列挙可能として定義できます)。したがって、この方法で十分です。

オブジェクトが完全に対象であるかどうかは、propertyIsEnumerable 属性によって判断できます。説明は次のとおりです。
propertyIsEnumerable 属性
は、指定されたプロパティが一部であるかどうかを示すブール値を返します。オブジェクトの、およびプロパティが列挙可能かどうか。
object.propertyIsEnumerable(proName)
パラメータ
オブジェクト
必須。オブジェクト。
プロ名
必須。プロパティ名の文字列値。
説明
propertyIsEnumerable プロパティは、proName がオブジェクト内に存在し、For...In ループを使用して列挙できる場合に true を返します。 propertyIsEnumerable プロパティは、オブジェクトに指定されたプロパティがない場合、または指定されたプロパティが列挙可能でない場合に false を返します。通常、事前定義されたプロパティは列挙可能ではありませんが、ユーザー定義のプロパティは常に列挙可能です。
propertyIsEnumerable プロパティは、プロトタイプ チェーン内のオブジェクトを考慮しません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。