在JavaScript中,eval()
接受一个字符串并将其作为JavaScript代码执行,例如,
eval( "alert('I am parsed as JavaScript code.');");
我感兴趣的是除eval()
之外的其他构造可能用于同一目的。我知道eval()
是邪恶的。这是出于教育目的。
到目前为止,我发现了三个这样的结构:
Function
构造函数:
var f = new Function( "alert('I am also parsed as JavaScript code.');");
f();
setTimeout()
功能:
setTimeout( "alert('So am I.');", 0);
setInterval()
功能:
setInterval( "alert('Me too!');", 0);
是否有其他构造可用于实现此行为?如果是的话,哪些?如果不是,有任何好的参考资料来证实这一主张吗?
答案 0 :(得分:2)
晦涩难懂,但只要页面尚未完成加载......
document.body.setAttribute("onLoad","alert('Hello world!');");
并非任何人都会这样做。正确?
答案 1 :(得分:1)
任何函数构造函数都可以:
console.log.constructor("alert(\"hello\")")()
或
(c=>Function(c))("alert (\"hello again\")")()
或
(_=>_('alert("hello")'))(Array.constructor)()
或
document.body.setAttribute("onmousemove","this.onmousemove=null;alert('hello')");
<html>
<head>
</head>
<body width="100%" hoight="100%">
hello
</body>
</html>