javascript - Käytä JS-prototyyppifunktioita uudelleen sarjauksen jälkeen
Kun otetaan huomioon seuraava koodi:
function Person(firstName, lastName) {
this.FirstName = firstName;
this.LastName = lastName;
}
Person.prototype.showFullName = function() {
return this.FirstName + " " + this.LastName;
};
var person = new Person("xx", "xxxx");
var jsonString = JSON.stringify(person);
var thePerson = JSON.parse(jsonString);
Tavoitteeni täällä olisi pystyä kutsumaan 'showFullName' thePerson-muuttujalla. Vaikka ymmärrän, että JS:llä ei oikeastaan ole olioita, sen täytyy olla jokin tapa sanoa, että jotain pitäisi käsitellä tietyllä tavalla, kuten `thePerson`-muuttujan tyypin muuttaminen `Person`-tyypiksi.
Vastaus #1
Tietojeni mukaan paras tapa tehdä tämä on ensin rakentaa tavallinen objekti ja sitten lisätä siihen tiedot käyttämällä jotain kuten jQueryn extend, eli.
var thePerson = new Person(); // and make sure the constructor gracefully handles no arguments
jQuery.extend(thePerson, JSON.parse(stringData));
Kuten alla mainittiin, sinun ei tarvitse käyttää extend-komentoa, jos olet vain luomassa matalaa kopiota, mikä tässä tapauksessa on. Voit yksinkertaisesti käydä läpi jäsennellyn datan ominaisuudet ja kopioida ne kohdeobjektiisi.
Vastaus #2
Se on mahdotonta.
Et voi muuntaa JSON-merkkijonoa objektiksi sen aiemmilla menetelmillä.
