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);
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.
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 –
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
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? –