这是这个问题的延续,但对于 ARRAYS。假设我想用 2 个参数调用数组函数,例如
console.log(
[3,4,5].slice(1,2)
)
在第一步中,我将字符集减少为jsfuck约定,其中我们有 6 个可用字符:([]()!+
为了清楚起见:az AZ 字母被"
(JS 字符串)和数字包围 - 很容易转换为这 6 个字符):
console.log(
[3,4,5]["slice"](1,2)
)
这里的问题是逗号(禁止字符),但我们可以通过使用trincot发现的以下巧妙技术来克服这个问题:
console.log(
[1]["concat"](2)["reduce"]([]["slice"]["bind"]([3,4,5]))
)
但新的问题出现了:
可以调用具有 2 个(或更多)参数的函数序列而不嵌套它们(这是由上述技术强加的),但是以“流动”方式,我们在右侧调用下一个函数,例如[3,4,5].slice(1,2).concat(6)..
:(不使用 'eval' 之类的将字符串解释为代码的解决方案)?(对于具有一个参数的函数,例如[3,4,5].slice(1).concat(6)
:)