>  기사  >  웹 프론트엔드  >  JavaScript에서 일반 개체를 형식화된 인스턴스로 캐스팅하는 방법은 무엇입니까?

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

DDD
DDD원래의
2024-10-18 12:05:28896검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.