gpt4 book ai didi

JavaScript 应用为 String 原型(prototype)调用提供奇怪的输出

转载 作者:行者123 更新时间:2023-11-29 18:00:30 28 4
gpt4 key购买 nike

使用参数数组调用 String.prototype 函数时,出现意外行为。

'foo'.concat.apply(this, ['bar','faz']);
//actual=> [object global]barfaz
//expected=> foobarfaz

'foo'.repeat.apply(this, [3]);
//actual=> [object global][object global][object global]
//expected=> foofoofoo


我只收到原型(prototype)函数调用的这些问题,这些函数调用具有我正在调用 apply 的参数:

'FOO'.toLowerCase();
//actual & expected=> foo


我曾尝试在没有 apply 的情况下手动传递参数,但在我的最终代码中我需要为参数 apply 一个数组,所以似乎没有办法解决 应用

最佳答案

问题是 this 在调用时解析,而不是在方法内部访问时解析。在这种情况下,this 解析为 global 对象。此外,调用这些方法的对象变得无关紧要,因为 apply 的第一个参数设置了方法中的 this 值。

而是将字符串作为第一个参数传递。

String.prototype.concat.apply('foo', ['bar','faz']);

String.prototype.repeat.apply('foo', [3]);

另一种方法:

''.concat.apply('foo', ['bar','faz']);

''.repeat.apply('foo', [3]);

关于JavaScript 应用为 String 原型(prototype)调用提供奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35285429/

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