2017-05-12 4 views
0

Ich habe kürzlich von Java-Backend zu JS-Frontend geändert. Wir verwenden eine Rückgrat-ähnliche Objektstruktur (zumindest sagten mir das meine Kollegen), und ich fragte mich, ob es eine Möglichkeit gibt, toString() zu überschreiben (z. B. sollte es von console.log aufgerufen werden).Hinzufügen zuString zu Backbone-Modell-ähnlichen Objekten

Dies ist, was unsere Modelle wie

// namespace 
 
var De = {}; 
 
De.Ppasler = {}; 
 

 
De.Ppasler.Model = (function() { 
 

 
/** @constructor */ 
 
function Model(param) { 
 
    var self = this; 
 

 
    self.public = function() { 
 
    // do sth public 
 
    console.log("public", private()); 
 
    }; 
 

 
    function private() { 
 
    // do sth private 
 
    return "private"; 
 
    } 
 
    
 
    // this is what I would have done in Java 
 
    self.toString = function() { 
 
    return "[object Model]"; 
 
    } 
 
} 
 

 
return Model; 
 
}()); 
 

 
var model = new De.Ppasler.Model(); 
 
model.public(); 
 
console.log(model);
sieht

hinzufügen toString Modell funktioniert nicht.

Ich habe auch versucht this one:

Model.prototype.toString und self.prototype.toString aber dies führt zu Fehler

ich nicht sicherstellen können, model definiert ist, und ich möchte ein undefined -check zu vermeiden, bevor toString direkt anrufen zum Zweck der Anmeldung.

+1

Siehe auch: http://stackoverflow.com/q/36215379/2333214. 'console.log' gehört nicht zum Standard. Sie sollten lieber 'console.log' überschreiben/Ihre eigene Log-Funktion schreiben, die' toString'/spezifische Methode aufruft, die Sie definiert haben –

+0

Danke für den Hinweis, ich hätte 100% geglaubt, dass 'console.log' ein Standard ist Funktion ... Ich bin verwöhnt von Java, denke ich :) – ppasler

+0

Das sieht wirklich wie ein [XY-Problem] aus (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Was versuchst du hier zu erreichen? –

Antwort

1

Die meisten Browser-Tools bieten eine intelligente console.log, mit der Sie Objekte direkt untersuchen können, so dass nicht überschrieben werden muss.

console.log demo with class

Auch wenn Sie toString auf Ihrem Objekt außer Kraft setzen würde, die meisten Browser Implementierung von console.log nicht nennen toString auf die übergebenen Objekte.

Etwas wie alert würde tun, was Sie erwarten.

Verwandte Themen