栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

你对jsfuck有了解吗?它的原理是什么?请举例说明

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

你对jsfuck有了解吗?它的原理是什么?请举例说明

真要解释我也解释不来,大概是这么个思路:

[]
这是数组字面量

逻辑非(取反)操作符会将所有东西转成

boolean

  • ![]
    false
  • !![]
    true

+X
正号将所有东西转成
number

X+[]
这个实际上执行了
X.toString() + [].toString()
,相当于直接给 X toString 了;

[][+[]]
要获得
undefined
可以访问数组里不存在的元素,这里访问
0
就行;

然后就可以获得

true
false
undefined
字符形式里的字符了:

![]+[] // 'false'!![]+[] // 'true'[][+[]]+[] // 'undefined'

然后随便选一个可以访问的函数(注意这里说“可以访问“,因为我们得到的字符还不完全),我们就可以获得更多字符,这里选用

Array.prototype.find

[][...从 undefined 中拆出来 'find']+[]// => 'function find() { [ native pre ] }'

并且可以获得

Function
构造器,这使得我们可以执行任何字符串形式的代码:

[][...从 undefined 中拆出来 'find'][...从各处拆出来 'constructor']// => function Function() { [ native pre ] }[][...从 undefined 中拆出来 'find'][...从各处拆出来 'constructor'](...字符串形式的代码)()// 这可以执行这段字符串形式的代码

还有一堆依赖废弃方法等等的 hack,我看着有点恶心,就不讲了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373827.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号