JSON 문자열을 구문 분석하여 JavaScript 객체로 변환하는 방법을 알고 있습니다. JSON.parse()
최신 브라우저 (및 IE9 +)에서 사용할 수 있습니다 .
훌륭하지만 JavaScript 객체를 특정 JavaScript 객체 (예 : 특정 프로토 타입)로 전환하려면 어떻게해야합니까?
예를 들어, 다음이 있다고 가정하십시오.
function Foo()
{
this.a = 3;
this.b = 2;
this.test = function() {return this.a*this.b;};
}
var fooObj = new Foo();
alert(fooObj.test() ); //Prints 6
var fooJSON = JSON.parse({"a":4, "b": 3});
//Something to convert fooJSON into a Foo Object
//....... (this is what I am missing)
alert(fooJSON.test() ); //Prints 12
다시 한 번 JSON 문자열을 일반 JavaScript 객체로 변환하는 방법이 궁금하지 않습니다. JSON 문자열을 "Foo"개체로 변환하는 방법을 알고 싶습니다. 즉, 내 객체에는 이제 함수 'test'와 속성 'a'와 'b'가 있어야합니다.
업데이트 약간의 연구를 한 후, 나는 이것을 생각했습니다 ...
Object.cast = function cast(rawObj, constructor)
{
var obj = new constructor();
for(var i in rawObj)
obj[i] = rawObj[i];
return obj;
}
var fooJSON = Object.cast({"a":4, "b": 3}, Foo);
작동합니까?
업데이트 2017 년 5 월 :이 작업을 수행하는 "현대적인"방법은 via Object.assign
이지만 IE 11 또는 이전 Android 브라우저에서는이 기능을 사용할 수 없습니다.