JScriptとSpident Monkeyの後継メンバーに対する視認性の違い
1035 ワード
Objectはすべてのjavascriptオブジェクトのスーパークラスで、他のオブジェクトはすべてObjectの属性と方法を継承しています.
Objectはデフォルトでは属性constructがあります.6つの方法はhasOwnPropertypeOf、propertyIs Enumerable、toLocal String、tostring、valueOfです.(ECMAScript 3.1 get ProttypeOf方法を追加し、firefox 3.5が実現されました)
for inではこれらの属性方法を挙げることができません.
それらを列挙することはできませんが、それでもそれらにアクセス(読み書き)できます.Obj.com nstructorのプロパティを例に挙げます.
肝心なところ
Spidear Monkeyのエンジンの下で、継承された隠し属性のcontructorを書き換えると、contructorが見えてきます.JScriptエンジンの下ではまだ見えません.
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エンジンの下ではまだ見えません.