js에서 대상을 복사하고 모든 속성과 속성에 대응하는 값을 가져오는 방법

1276 단어
js에서 다음 js 대상과 같은 대상을 어떻게 복제합니까?
이 대상의 모든 속성을 알면 자연히 new를 다시 한 번 만들고 모든 속성에 값을 부여할 수 있지만 모르면?어떻게 내용이 같은 대상을 만듭니까?
 
  
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];
}

사실 이런 방식은 일정한 제한이 있다. 관건은 js에서 for in에 일정한 제한이 있기 때문에 대상의 모든 속성을 훑어보지 않고 일일이 옮길 수 있는 속성만 훑어본다. js 핵심에서 정의한 방법은 모두 일일이 옮길 수 없다. 예를 들어 tostring()이지만 코드에서 정의한 속성은 모두 일일이 옮길 수 있다(특수 정의를 통해 일일이 옮길 수 없는 것으로 정의할 수 있다).그래서 이 방법은 쓰기에 충분하다.
하나의 대상이 for in을 실행할 수 있는지 여부는property IsEnumerable 속성을 통해 판단할 수 있습니다. 설명은 다음과 같습니다.
propertyIsEnumerable 속성
Boolean 값을 반환하여 지정된 속성이 객체의 일부인지 또는 열거할 수 있는지 여부를 나타냅니다.
object.propertyIsEnumerable(proName)
매개 변수
object
필수 옵션입니다.한 대상.
proName
필수 옵션입니다.속성 이름의 문자열 값
설명
property IsEnumerable 속성은true로 되돌아옵니다.object가 지정한 속성을 가지지 않거나 지정한 속성이 열거할 수 없는 경우propertyIsEnumerable 속성은false로 되돌아옵니다.전형적으로 미리 정의된 속성은 열거할 수 있는 것이 아니라 사용자가 정의한 속성은 항상 열거할 수 있는 것이다.
propertyIsEnumerable 속성은 원형 체인의 객체를 고려하지 않습니다.

좋은 웹페이지 즐겨찾기