SORU
3 Mayıs 2011, Salı


Ayrıştırma JSON JavaScript Nesne, Belirli bir Prototip içine Dize

Bir JSON Dizesini ayrıştırmak ve JavaScript bir Nesne haline nasıl geldiğini biliyorum. Eval() veya bir WordPress kullanmak.() parseJSON.

Bu harika, ama bunu nasıl JavaScript Nesne alıp çevirebilirözellikleJavaScript Nesne (belirli bir prototip ile yani)?

Örneğin, varsayalım:

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 = jQuery.parseJSON({"a":4, "b": 3});
//Something to convert fooJSON into a Foo Object
//....... (this is what I am missing)
alert(fooJSON.test() ); //Prints 12

Yine, genel bir JavaScript Nesnesine JSON dize dönüştürmek için nasıl merak ediyorum. Bir "" Nesne. Foo içine bir JSON dize dönüştürmek için nasıl bilmek istiyorum Benim Nesne artık bir işlevi olmalı '' ve özellikleri 'a' ve 'b'. test

GÜNCELLEME Biraz araştırma yaptıktan sonra bunu düşünmüştüm

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);

Bu işe yarayacak mı?

CEVAP
3 Mayıs 2011, Salı


Aşağıda bir örnek (bu örnek, yerel JSON nesne kullanır). Benim değişiklikleri BAŞKENTLERİNDE yorumladı

function Foo(obj) // CONSTRUCTOR CAN BE OVERLOADED WITH AN OBJECT
{
    this.a = 3;
    this.b = 2;
    this.test = function() {return this.a*this.b;};

    // IF AN OBJECT WAS PASSED THEN INITIALISE PROPERTIES FROM THAT OBJECT
    for (var prop in obj) this[prop] = obj[prop];
}

var fooObj = new Foo();
alert(fooObj.test() ); //Prints 6

// INITIALISE A NEW FOO AND PASS THE PARSED JSON OBJECT TO IT
var fooJSON = new Foo(JSON.parse('{"a":4,"b":3}'));

alert(fooJSON.test() ); //Prints 12

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmeriiK_HD

    AmeriiK_HD

    16 AĞUSTOS 2012
  • KoreanFrogMania님의 채널

    KoreanFrogMa

    18 Aralık 2011
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007