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

  • BDGcustoms

    BDGcustoms

    24 NİSAN 2011
  • PomplamooseMusic

    PomplamooseM

    28 HAZİRAN 2008
  • SoundHound

    SoundHound

    8 Mart 2006