FF JavaScript引擎私有属性全解

FF里面有不少让人爱不释手的私有属性和方法 它们没有被ECMAScript支持 但却非常好用 所有这些属性都是__XXXX__这种形式

在FF2.0 JS引擎SpiderMonkey1.7版本下可以使用的所有私有属性(这个应该是比较全的 我从源码里面找的)

JavaScript 1.0
__count__
表示一个对象的自身的属性个数 即hasOwnProperty为true的属性

var  o = {a: 1 ,b: 2 };
alert(o.__count__);

__parent__
表示对象定义时所在的scopeChain 一般只有函数对象有用 而且会因为某些优化而不可预料

var  o = {a: 1 ,b: 2 };
alert(o.__parent__);


__proto__
表示对象的原型 即是原型链的指针

var  o0 = {c: 3 }
var  o = {a: 1 ,b: 2 };
alert(o.c);
o.__proto__
= o0;
alert(o.c);



__defineGetter__
函数 定义一个对象属性的getter 类似C#

var  o = {};
var  a = " Hello! " ;
o.__defineGetter__(
" a " , function (){ return  a;});
alert(o.a);
a
= " Hi " ;
alert(o.a);


__defineSetter__
函数 定义一个对象属性的setter

var  o = {};
var  a;
o.__defineSetter__(
" a " , function (v){a = v;});
o.a
= " Hello! " ;
alert(a);


__lookupGetter__
查找某一getter是否存在
__lookupSetter__
查找某一setter是否存在

var  o = {};
o.__defineSetter__(
" a " , function (v){a = v;});
alert(o.__lookupSetter__(
" a " ));

JavaScript 1.5
__noSuchMethod__
当访问某一对象不存在的属性时的行为

var  obj = {};
obj.__noSuchMethod__ 
=   function  __noSuchMethod__ (id, args) {
  alert(id);
}
obj.OOXX();
obj.XXOO();




JavaScript 1.7
__iterator__
Iterator对象使用的属性 可以改变for in之类的默认行为

var  range = {from: 1 ,to: 10 };
range.__iterator__
= function (){
    
return  {
        current:
this .from,
        to:
this .to,
        next:
function (){
            
if ( this .current > this .to) throw  StopIteration;
            
return   this .current ++ ;
        }
    }
}
for ( var  i  in  range)
    alert(i);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值