【发布时间】:2017-10-11 08:00:00
【问题描述】:
我最近从 Java 后端更改为 JS 前端。我们使用像对象结构这样的主干(至少我的同事是这么告诉我的),我想知道是否有办法覆盖toString()(例如应该从console.log 调用)。
这就是我们的模型的样子
// 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);
添加toString 模型不起作用。
我也试过this one:
Model.prototype.toString 和 self.prototype.toString 但这会导致错误
我无法确定model 是否已定义,并且我想避免undefined-check,然后直接调用toString 进行登录。
【问题讨论】:
-
见这个:stackoverflow.com/q/36215379/2333214。
console.log不是标准的一部分。你最好重写console.log/ 编写你自己的日志函数来调用你定义的toString/ 特定方法 -
感谢您的提示,我会 100% 猜到
console.log是一个标准函数……我猜我被 Java 宠坏了 :) -
这看起来真的很像XY problem。您想在这里实现什么目标?
-
@EmileBergeron 因为我认为这是一种常见的方法,我没有质疑它。我的意图是以有意义的方式记录“对象”。由于我不能确定它的定义,我不想打电话给
model.toString()。 -
console.log与大多数浏览器工具一起使用是智能的,它可以让您直接在其中探索对象。
标签: javascript backbone.js tostring