>  기사  >  웹 프론트엔드  >  js에서 객체를 복사하고 해당 객체의 모든 속성과 해당 값을 얻는 방법 ​​​​자바스크립트 기술

js에서 객체를 복사하고 해당 객체의 모든 속성과 해당 값을 얻는 방법 ​​​​자바스크립트 기술

WBOY
WBOY원래의
2016-05-16 17:19:011336검색

다음 js 객체와 같이 js에서 객체를 복사하는 방법입니다.

이 개체의 속성을 모두 알고 있으면 자연스럽게 새 개체를 만든 다음 각 속성에 값을 할당할 수 있지만 모르면 어떻게 되나요? 동일한 내용으로 개체를 만드는 방법은 무엇입니까?

코드 복사 코드는 다음과 같습니다.

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

가장 쉬운 방법은 for in을 사용하는 것입니다.

예를 들어 obj2는 obj와 정확히 동일한 속성을 갖습니다
코드 복사 코드는 다음과 같습니다.

var obj2=new Object()
for(var p in obj; )
{
var name=p;//속성 이름
var value=obj[p];//속성에 해당하는 값
obj2[name]=obj[p]
}

사실 이 방법에는 특정 제한 사항이 있습니다. for js에는 개체의 모든 속성이 아니라 열거 가능한 속성만 통과된다는 점입니다. js 코어에 의해 정의된 메소드는 열거 가능하지 않습니다(예: tostring()). 그러나 코드에 정의된 속성은 모두 열거 가능합니다(특별히 열거 불가능으로 정의될 수 있음). 그러므로 이 방법이면 충분합니다.

객체가 in에 대해 철저하게 가능한지 여부는 propertyIsEnumerable 속성을 통해 판단할 수 있습니다. 설명은 다음과 같습니다.
propertyIsEnumerable 속성
은 지정된 속성이 일부인지 여부를 나타내는 부울 값을 반환합니다. 객체의 속성과 열거 가능한지 여부.
object.propertyIsEnumerable(proName)
매개변수
객체
필수입니다. 객체.
proName
필수입니다. 속성 이름의 문자열 값입니다.
설명
proName이 객체에 존재하고 For...In 루프를 사용하여 열거할 수 있는 경우 propertyIsEnumerable 속성은 true를 반환합니다. propertyIsEnumerable 속성은 객체에 지정된 속성이 없거나 지정된 속성이 열거 가능하지 않은 경우 false를 반환합니다. 일반적으로 미리 정의된 속성은 열거 가능하지 않지만 사용자 정의 속성은 항상 열거 가능합니다.
propertyIsEnumerable 속성은 프로토타입 체인의 객체를 고려하지 않습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.