考虑以下代码:
Test = function() {
}
t = new Test();
for (var i = 0; i < 8; i++) {
result = t instanceof Test;
}
Run Code Online (Sandbox Code Playgroud)
如果您将迭代次数从8更改为9,则在最新版本的Firefox(41.0.1)中,循环将突然缩短约100倍.我在两台不同的PC上测试了它,魔法限制总是8.
这是我使用的JSPerf测试:http://jsperf.com/instanceof-8-times-vs-9-times
有谁知道为什么会发生这种情况?它似乎特定于instanceof.如果您对该对象执行其他操作,则不会发生这种情况,例如检查属性.
注意:我还提交了一个Bugzilla错误.