Ben*_*her 1 javascript arrays tostring
在Array原型上定义自定义.toString()方法时,如何访问调用该方法的实际数组?
这有效:
Array.prototype.toString = () => 'custom';
"" + [1,2,3]; // 'custom'
Run Code Online (Sandbox Code Playgroud)
但"这个"不起作用:
Array.prototype.toString = () => "0: " + this[0];
"" + [1,2,3]; // 0: undefined
Run Code Online (Sandbox Code Playgroud)
显然this没有引用调用.toString()的数组,但我不确定为什么并且不确定如何获取数组.
旁注 - 我知道覆盖这样的内置方法是多么糟糕.我做了很复杂(我的级别)递归函数的调试 - 代码本身并不是依靠这个功能对于任何逻辑.
更详细的背景信息是我在许多不同的地方注销一个数组,并且更改默认格式似乎比每次写一个更长的日志语句更容易.事实证明我错了,但现在只想弄清楚这个问题,因为它似乎是我应该知道的基本内容.
您可以this用来访问实际的数组.但它不适this用于箭头功能.在这种情况下,您需要经典function关键字.
var array = ['first', 'second', 'third'];
Array.prototype.toString = () => "0: " + this[0];
console.log(array.toString());
Array.prototype.toString = function () { return "0: " + this[0] };
console.log(array.toString());Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |