Javascript 数组上的Custom.toString()方法

Javascript 数组上的Custom.toString()方法,javascript,arrays,tostring,Javascript,Arrays,Tostring,在数组原型上定义自定义.toString方法时,如何访问调用该方法的实际数组 这项工作: Array.prototype.toString = () => 'custom'; "" + [1,2,3]; // 'custom' 但这不起作用: Array.prototype.toString = () => "0: " + this[0]; "" + [1,2,3]; // 0: undefined 显然,这并没有引用正在调用.toString的数组,但我不确定为什么以及如何获取

在数组原型上定义自定义.toString方法时,如何访问调用该方法的实际数组

这项工作:

Array.prototype.toString = () => 'custom';
"" + [1,2,3]; // 'custom'
但这不起作用:

Array.prototype.toString = () => "0: " + this[0];
"" + [1,2,3]; // 0: undefined
显然,这并没有引用正在调用.toString的数组,但我不确定为什么以及如何获取该数组

旁注-我知道像这样重写内置方法是多么糟糕。我这样做是为了调试一个复杂的for-level递归函数——代码本身并不依赖于这个函数的任何逻辑

更详细的背景信息是,我正在许多不同的地方注销一个数组,更改默认格式似乎比每次编写更长的日志语句更容易。事实证明我错了,但现在我只想解决这个问题,因为这似乎是我应该知道的一些基本信息。

您可以使用它访问实际阵列。但它不适用于这个和一个。在这种情况下,您需要classic function关键字

变量数组=['first','second','third']; Array.prototype.toString==>0:+this[0]; console.logarray.toString; Array.prototype.toString=函数{返回0:+this[0]}; console.logarray.toString 您可以使用它来访问实际阵列。但它不适用于这个和一个。在这种情况下,您需要classic function关键字

变量数组=['first','second','third']; Array.prototype.toString==>0:+this[0]; console.logarray.toString; Array.prototype.toString=函数{返回0:+this[0]}; console.logarray.toString 这在箭头函数中没有定义

如上所述:

箭头函数不会创建自己的上下文,因此它具有封闭上下文的原始含义

这在箭头函数中没有定义

如上所述:

箭头函数不会创建自己的上下文,因此它具有封闭上下文的原始含义


es2015中的短数组函数没有这样的文字。所以使用


es2015中的短数组函数没有这样的文字。所以使用


谢谢现在听起来有点奇怪,但我通常不使用这个,所以它以前从来都不是问题。谢谢。这听起来有点奇怪,但我通常不使用这个,所以以前从来没有出现过这个问题。看起来像是一个复制品,是的,是的,一旦你知道这个在箭头函数中与答案相关。我以前的自己甚至不知道箭头函数的使用与这个问题有任何关系,所以我不会搜索这个短语或查看那些问题。可能也是为什么当我搜索了30多分钟的主题并阅读了所有建议的链接时,都没有找到任何有用的链接。看起来像是重复的是的,是的,一旦你知道这是一个箭头函数与答案相关。我以前的自己甚至不知道箭头函数的使用与这个问题有任何关系,所以我不会搜索这个短语或查看那些问题。也许这也是为什么当我搜索了30多分钟的主题,并阅读了每一个建议的链接,没有任何有用的结果。
Array.prototype.toString = function() {
 return  "0: " + this[0];
}