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);



相关阅读:
如何在IIS上搭建WAP网站
用php来检测proxy
用Apache的.htaccess文件增加用户认证
解决AJAX中文回传乱码
CSS网页布局入门教程2:一列自适应宽度
聊天室php&mysql(二)
防止别人盗链的好方法推荐
一个MYSQL操作类
FORM程序中Oracle与Access表的导入和导出
调用access报表
SQLServer 2008 新增T-SQL 简写语法
繁简字转换功能
SqlServer 2005的排名函数使用小结
Oracle体系框架及SQL语句的性能
快速导航

Copyright © 2016 phpStudy |