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ä.