JavaScript에서 일반 개체를 형식화된 인스턴스로 캐스팅하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-18 12:05:28
원래의
894명이 탐색했습니다.

How to Cast Generic Objects to Typed Instances in JavaScript?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!