다음 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 속성은 프로토타입 체인의 객체를 고려하지 않습니다.