每一个引用类型的实例中,都有一个指针,指向其原型对象。这个指针在非IE浏览器里通过__proto__表示,而在IE里不提供。
看如下代码:
obj = {};
obj.__proto__.toString = function() { return "hello"; }
test = {};
alert(test);
输出结果就是hello。原因在于JavaScript中只有一个Object原型对象,第二行,修改了这个原型对象的toString成员变量,而Object原型对象是所有引用类型实例共享的,只有一个,所以其他对象调用toString()也就发生了变化。
IE不提供这个__proto__,使得程序员无法获取到Object原型对象,也就无法修改这个老祖宗的属性了。这样做就更安全了。