添加 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.toStringself.prototype.toString 但这会导致错误

我无法确定 model 是否已定义,我想在直接调用 toString 进行登录之前避免 undefined 检查。

大多数浏览器工具都提供智能 console.log,让您可以直接浏览对象,因此无需重写 toString

即使您要覆盖对象上的 toString,大多数 console.log 的浏览器实现也不会对传递的对象调用 toString

alert 之类的东西会如您所愿。