2009-07-09 23 views
12

Otrzymuję "Obiekt nie obsługuje tej właściwości lub błędu metody", czy ktoś wie, dlaczego?Metoda JavaScript toSource() nie działa

mam podłączone do wartości identyfikatora użytkownika, fname lname, oname, Sam hasAccess

function Employee(id, fname, lname, oname, sam, access) { 
    this.id = id; 
    this.fname = fname; 
    this.lname = lname; 
    this.oname = oname 
    this.sam = sam; 
    this.access = access; 
} 

var emp = new Employee(userId, fname, lname, oname, sam, hasAccess); 

var jsonstuff = emp.toSource(); //Breaking here 

Chociaż ten link mówi jego możliwości http://www.w3schools.com/jsref/jsref_toSource_date.asp

Odpowiedz

19

toSource() nie działa w przeglądarce Internet Explorer ani Safari. To jest tylko Gecko. Aby uzyskać alternatywy, patrz Implementing Mozilla's toSource() method in Internet Explorer.

+8

+1 za wspomnienie Safari! Świat przeglądarki to nie tylko Firefox i IE. –

+0

@Vince: Jeśli twój szef jest niekompetentny, spróbuj wyjaśnić mu, że upewnienie się, że działa on poza IE i FF spowoduje mniej prac konserwacyjnych przy następnym uaktualnieniu IE. Dzięki temu użytkownicy IE i FF będą znacznie mniej zirytowani Twoją firmą, gdy przeglądają witrynę ze swojego telefonu komórkowego (bez względu na to, czy jest to iPhone, Nokia czy coś innego bez IE). – Fredrik

+0

Nie zapominaj, że Chrome naprawdę bierze udział w walce. Pozostawiając na boku Safari + Chrome + Opera, możesz zostawić 15% udziału (w zależności od twojego rynku). Na przykład: http://www.w3schools.com/browsers/browsers_stats.asp – lepe

8

Spróbuj użyć JSON serializer zamiast. toSource jest specyficzna dla Mozilli i nie jest obsługiwana przez IE.

Jeśli właśnie debugujesz, to najlepiej będzie install Firebug i użyć console.dir (emp); aby wydrukować zawartość obiektu do okna konsoli.

Aktualizacja: Należy zauważyć, że na link you posted jest napisane: "Uwaga: ta metoda nie działa w przeglądarce Internet Explorer!" I na MDC page mówi "Niestandardowy".

+0

Ups! przepraszam, faceci nie widzieli, że –

+0

Istnieje 5 różnych implementacji JSON Serializer z tego łącza GitHub. Czy możesz podać przykładową alternatywę tego kodu: alert (obj.toSource()) – MacGyver

+3

Wypróbuj 'alert (JSON.stringify (obj))' – Prestaul

4

Można zadzwonić toString zamiast, lub umieścić w stanie jak ten ...

var jsonstuff = (emp.toSource) ? emp.toSource() : emp.toString(); 

EDIT:

Ponieważ ta nie działa dla Ciebie, może chcieć użyć JSON.stringify()

2

Chociaż nie jest zalecane (rozszerzenie natywne JS obiektów) podczas rozwoju możesz użyć:

Object.prototype.toSource 
    || (Object.prototype.toSource = function(){return JSON.stringify(this);}) 

c = {a:100} 
//>Object 
c.toSource() 
//>"{"a":100}" 

Pozdrawiam!

+0

A co z funkcjami i tak dalej? –

Powiązane problemy