这篇Javascript中发生了什么?

时间:2016-03-23 08:21:33

标签: javascript

有人可以向我解释下面的Javascript在构造函数方面做了什么以及它如何使用/调用变量a中定义的函数?

<script>
a = 'alert("Hi");'
{}["apple"]["constructor"]["constructor"](a)();
</script>

谢谢!

1 个答案:

答案 0 :(得分:12)

第一个{}只是一个诱饵,它被解释为空块并被忽略。所以我们有

["apple"]["constructor"]["constructor"](a)()

[].constructor.constructor(a)()

Array.constructor(a)()

Function(a)()

(function() { alert('Hi') })()

constructor通过原型解决,这里的结构如下:

enter image description here