Tôi biết cách phân tích một chuỗi JSON và biến nó thành một đối tượng JavaScript. Bạn có thể sử dụng JSON.parse()
trong các trình duyệt hiện đại (và IE9 +).
Điều đó thật tuyệt, nhưng làm cách nào tôi có thể lấy Đối tượng JavaScript đó và biến nó thành Đối tượng JavaScript cụ thể (nghĩa là với một nguyên mẫu nhất định)?
Ví dụ: giả sử bạn có:
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
Một lần nữa, tôi không tự hỏi làm thế nào để chuyển đổi một chuỗi JSON thành một Đối tượng JavaScript chung. Tôi muốn biết làm thế nào để chuyển đổi một chuỗi JSON thành Đối tượng "Foo". Đó là, Đối tượng của tôi bây giờ sẽ có chức năng 'kiểm tra' và thuộc tính 'a' và 'b'.
CẬP NHẬT Sau khi thực hiện một số nghiên cứu, tôi nghĩ về điều này ...
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);
Công việc vừa ý?
CẬP NHẬT Tháng 5 năm 2017 : Cách thức "hiện đại" để thực hiện việc này là thông qua Object.assign
, nhưng chức năng này không khả dụng trong IE 11 hoặc các trình duyệt Android cũ hơn.