javascript - ES6 如何重写 toString() 方法?
问题描述
在 ES5 样式的 javascript 中,要覆盖该toString
方法,我只需执行以下操作:
function myFunction() {
}
myFunction.prototype.toString = function() {
return "My amazing function";
};
var myAmazingFunc = new myFunction();
console.log(myAmazingFunc);
在我当前的代码中,我使用 ES6,我的对象现在是一个类(本质上是一个函数)。
class MyAwesomeClass {
// awesome code goes here
}
我试图覆盖该toString
方法的方法如下:
class MyAwesomeClass {
toString() {
return "Awesome";
}
}
并且
class MyAwesomeClass {
// awesome code goes here
}
MyAwesomeClass.prototype.toString = function() {
return "Awesome";
};
也没有prototype
- 但它似乎仍然没有被调用。这在 ES6 类中怎么可能?
解决方案
这实际上确实有效:
class MyAwesomeClass {
toString() {
console.log("toString called");
return "Awesome";
}
}
console.log(new MyAwesomeClass() + "!!!");
您的测试方式一定有问题(提示:console.log
不会触发toString
)。
如果您正在寻找一种自定义console.log
输出的方法,这只能在 node.js ( https://nodejs.org/api/util.html#util_custom_inspection_functions_on_objects ) 中通过添加自定义inspect
方法来实现。尽管从节点 10 开始,此功能已被弃用。
推荐阅读
- flutter - 仅使用 topleft 和 topright 边框颤动顶部边框
- python - 如何为每个子列表分配分数?
- android - Moshi和retrofit2:解析根元素的内容
- javascript - 我有一个对象数组,其中我有一个键,它又是对象数组现在我需要检查 id = 4 的条件
- python - 矩阵中的 Pandas 合并和计算
- python - Python 中的 DecisonTreeclassifer() - 尝试构建树时出错
- solr - Solr IN 查询类似 Sql
- f# - 使用 F# 中插入的新项目制作 Map 的副本
- json - 如何存储渲染 React 组件所需的数据?
- android - 在活动应用程序崩溃之间传递一个字节 [] 但在片段之间传递相同的字节 [] 它运行良好