如何覆盖对象的默认输出
How do I override the default output of an object?
假设我在JavaScript中创建了一个简单的对象:
function MyObj() {
this.prop = "property";
}
现在,如果我创建一个实例并将其输出到控制台,我会看到对象表示:
var obj = new MyObj();
console.log(obj);
如何将该输出改为字符串?:例如,我希望控制台显示My property value is 'property'
,而不是[对象对象]。
我试过使用MyObj.prototype.toString
,但似乎不起作用。
您可以挂接浏览器控制台,然后重新定义它:
var obj = {
name: "Joel",
age: 32,
toString: function() {
return this.name + " is " + this.age + " years old.";
}
};
var browserConsole = console;
console = {
log: function(data) {
if (typeof data === "object") {
browserConsole.log(data.toString());
} else {
browserConsole.log(data);
}
}
}
console.log(obj);
MyObj.prototype.toString() = function() {}
将工作,但不会输出到控制台。如果你做了类似的事情
console.log("The object says: " + obj);
您将看到toString()
的输出
function MyObj() {
this.prop = "property";
}
MyObj.prototype.toString = function() {
return "My property 'prop' has the value: '" + this.prop + "'";
}
var obj = new MyObj();
console.log("the object says: " + obj);
// the object says: My property 'prop' has the value: 'property'
// Or call toString() explicitly
console.log(obj.toString());
// My property 'prop' has the value: 'property'
相关文章:
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- 使用默认函数扩展 JavaScript 对象
- javascript中选项对象的默认值
- 有没有任何方法可以将json对象存储在HTML标记的默认/自定义属性中,比如<tr>
- 使用复杂对象上的删除为选择框手动设置默认值
- 将javascript(jQuery)对象属性返回到默认状态
- 具有默认值的 Javascript 对象
- 如何定义 JSON 对象值的默认值
- 是否可以在对象的默认获取器/设置器上应用猴子修补
- 如何设置具有未知数量对象的数组的默认值
- Angular js ng-click对象,逻辑不是(!)默认为真或假
- 让函数中的接收器默认为全局对象背后的基本原理是什么?
- 对象的默认值
- 接受选项对象作为参数的简洁方法,回退到省略属性的默认值
- 定义JavaScript函数参数的对象默认值
- 主干对象默认值不起作用
- Geogebra Javascript - 如何为在图形视图中创建的每个数学对象默认没有标题
- JavaScript嵌套对象默认值
- Javascript对象默认值
- 如果函数中没有定义对象,则对象默认为函数