gpt4 book ai didi

javascript - ES6 如何覆盖 toString() 方法?

转载 作者:行者123 更新时间:2023-11-29 18:46:51 26 4
gpt4 key购买 nike

在 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 开始,此功能已被弃用。

关于javascript - ES6 如何覆盖 toString() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53154340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com