淘宝 躲猫猫 javascript 题目求解

这是 一道javascript 题目, 答案应该是一个url, 该如何解?
请大家帮忙, 贴答案的时候也顺便解释下原理呗:

a="hostname,test,value,input,getElementsByTagName,nextQuiz,23805,http,protocol,location,reverse,join,split,w2YHUbQTv6z4COflZD7FXGxLWTO?/ziuq/moc.oaboat.deu//:ptth,GET,...".split(",");this[a[5]]=a[13][a[12]]("")[a[10]]()[a[11]]("");0;
阅读 5.5k
4 个回答

淘宝的UED题目:

a="hostname,test,value,input,getElementsByTagName,nextQuiz,23805,http,protocol,location,reverse,join,split,w2YHUbQTv6z4COflZD7FXGxLWTO?/ziuq/moc.oaboat.deu//:ptth,GET,...".split(",");
this[a[5]]=a[13][a[12]]("")[a[10]]()[a[11]]("");
0;

console.log(this[a[5]]);

把a用","分隔成数组,将其中的 w2YHUbQTv6z4COflZD7FXGxLWTO?/ziuq/moc.oaboat.deu//:ptth 倒序输出
运行一遍输出的结果是:

http://ued.taobao.com/quiz/?OTWLxGXF7DZlfOC4z6vTQbUHY2w
this[a[5]]=a[13][a[12]]("")[a[10]]()[a[11]]("");

相当于:

this['nextQuiz'] = "w2YHUbQTv6z4COflZD7FXGxLWTO?/ziuq/moc.oaboat.deu//:ptth".split("").reverse().join("");

所以结果是

location.href = nextQuiz;

个人认为原理就是作为 Javascript 对象的方法调用,下面两种形式是等价的:

obj.method();
等价于
obj['method']();
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题