JScriptとSpident Monkeyの後継メンバーに対する視認性の違い


Objectはすべてのjavascriptオブジェクトのスーパークラスで、他のオブジェクトはすべてObjectの属性と方法を継承しています.
 
Objectはデフォルトでは属性constructがあります.6つの方法はhasOwnPropertypeOf、propertyIs Enumerable、toLocal String、tostring、valueOfです.(ECMAScript 3.1 get ProttypeOf方法を追加し、firefox 3.5が実現されました)
 
for inではこれらの属性方法を挙げることができません.
var obj = {};
for(var atr in obj) 
	alert(atr);
 
それらを列挙することはできませんが、それでもそれらにアクセス(読み書き)できます.Obj.com nstructorのプロパティを例に挙げます.
// 
alert(obj.constructor);//Object()

// 
obj.constructor = null;

//      null 
alert(obj.constructor);//null
 
肝心なところ
obj.constructor = null;
Obj.co ntructorのプロパティが書き換えられたら、for inで列挙してみます.
for(var atr in obj) 
	alert(atr);//obj.constructor   , firefox    (  ), IE        (   )

 
 
Spidear Monkeyのエンジンの下で、継承された隠し属性のcontructorを書き換えると、contructorが見えてきます.JScriptエンジンの下ではまだ見えません.