JavaScript에서 일반 객체를 형식화된 인스턴스로 캐스팅
문제 설명:
JSON 응답 서버에는 클래스 인스턴스를 나타내는 일반 개체가 포함되는 경우가 많습니다. 이러한 일반 객체를 형식화된 인스턴스로 캐스팅하면 해당 클래스 메서드를 활용하고 형식화된 데이터에 액세스할 수 있습니다.
해결책:
객체 인스턴스를 생성하려면 생성자를 호출해야 합니다. 하지만 JSON 데이터에는 생성자 정보가 부족하므로 다른 접근 방식이 필요합니다.
1. 반복 복제:
이 접근 방식에는 일반 개체의 속성을 새로 생성된 인스턴스에 복제하는 작업이 포함됩니다.
<code class="javascript">var personLiteral = ...; // JSON.parse("..."); var personInstance = new Person(); for (var prop in personLiteral) personInstance[prop] = personLiteral[prop];</code>
2. Object.assen 사용:
Object.Assign을 사용하면 동일한 작업을 더 간결하게 수행할 수 있습니다.
<code class="javascript">var personInstance = Object.assign(new Person(), personLiteral);</code>
중첩 구조가 있는 더 복잡한 객체의 경우 속성을 반복하고 동일한 복제 과정을 반복적으로 적용합니다.
3. 사용자 정의 생성자 복제:
모든 생성자는 일반 개체를 허용하고 복제하여 필요한 논리를 처리하도록 확장할 수 있습니다.
<code class="javascript">Person.fromJSON = function(obj) { // custom code, as appropriate for Person instances // might invoke `new Person` return …; };</code>
예:
특정 시나리오에서는 복제 프로세스를 Person 및 Animal 개체 모두에 적용합니다.
<code class="javascript">var persons = JSON.parse(serverResponse); for (var i=0; i<persons.length; i++) { persons[i] = $.extend(new Person, persons[i]); for (var j=0; j<persons[i].animals; j++) { persons[i].animals[j] = $.extend(new Animal, persons[i].animals[j]); } }</code>
개별 인스턴스가 아닌 Animal 프로토타입에 실행 메서드를 추가해야 한다는 점을 기억하세요.
위 내용은 JavaScript에서 일반 개체를 형식화된 인스턴스로 캐스팅하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!