添加 toString 到 backbone-model-like 对象
Add toString to backbone-model-like objects
我最近从 Java 后端更改为 JS 前端。我们使用类似 backbone 的对象结构(至少我的同事是这么告诉我的),我想知道是否有一种方法可以覆盖 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
是否已定义,我想在直接调用 toString
进行登录之前避免 undefined
检查。
大多数浏览器工具都提供智能 console.log
,让您可以直接浏览对象,因此无需重写 toString
。
即使您要覆盖对象上的 toString
,大多数 console.log
的浏览器实现也不会对传递的对象调用 toString
。
alert
之类的东西会如您所愿。
我最近从 Java 后端更改为 JS 前端。我们使用类似 backbone 的对象结构(至少我的同事是这么告诉我的),我想知道是否有一种方法可以覆盖 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
是否已定义,我想在直接调用 toString
进行登录之前避免 undefined
检查。
大多数浏览器工具都提供智能 console.log
,让您可以直接浏览对象,因此无需重写 toString
。
即使您要覆盖对象上的 toString
,大多数 console.log
的浏览器实现也不会对传递的对象调用 toString
。
alert
之类的东西会如您所愿。