2009-05-15 32 views
7

Tôi có một số JSON trả lại trình duyệt như thế này "sản phẩm":Beginner JavaScript: Làm việc với JSON và các đối tượng trong JavaScript

{ "Title": "School Bag", "Image": "/images/school-bag.jpg" } 

Tôi muốn dữ liệu này là một "sản phẩm" đối tượng để tôi có thể sử dụng nguyên mẫu phương pháp giống như một toHTMLImage() mà trả về một đại diện hình ảnh HTML của sản phẩm:

function Product() { } 
Product.prototype.toHTMLImage = function() { //Returns something like <img src="<Image>" alt="<Title>" /> } 

làm thế nào để chuyển đổi kết quả JSON của tôi vào một đối tượng Product vì vậy mà tôi có thể sử dụng toHTMLImage?

Trả lời

18

đơn giản, nếu tôi đã nhận nó,

var json = { "Title": "School Bag", "Image": "/images/school-bag.jpg" } 
function Product(json) { 
    this.img = document.createElement('img'); 
    this.img.alt = json.Title; 
    this.img.src = json.Image; 

    this.toHTMLImage = function() { 
     return this.img; 
    } 
} 

var obj = new Product(json); // this is your object =D 
2
var stuff = { "Title": "School Bag", "Image": "/images/school-bag.jpg" } 
var newstuff = new Product(); 
for(i in stuff) newstuff.i = stuff[i]; 

Không chắc nếu điều này sẽ làm việc, nhưng cho nó một shot:

var stuff = { "Title": "School Bag", "Image": "/images/school-bag.jpg" } 
stuff.prototype = Product; 
+0

Hãy thử: công cụ .__ proto__ = Product.prototype; –

0

Để chuyển đổi JSON thành một đối tượng, bạn có thể sử dụng window.JSON.parse(jsonText) trong M ozilla (kiểm tra Chrome và Opera, tôi không biết làm thế nào nó hoạt động ở đó.)

Trong Internet Explorer, bạn có thể sử dụng (new Function("return " + jsonText))(), nhưng bạn nên kiểm tra JSON cho các ký hiệu không hợp lệ, google nó.

Các vấn đề liên quan