手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >关于__defineGetter__ 和__defineSetter__的说明
关于__defineGetter__ 和__defineSetter__的说明
摘要:作者:anbutu来源:http://anbutu.javaeye.com/blog/post/194276关键字:JavaScriptMo...

作者:anbutu

来源:http://anbutu.javaeye.com/blog/post/194276

关键字:JavaScriptMozilla__defineGetter____defineSetter__

Getter是一种获取一个属性的值的方法,Setter是一种设置一个属性的值的方法。可以为任何预定义的核心对象或用户自定义对象定义getter和setter方法,从而为现有的对象添加新的属性。

有两种方法来定义Getter或Setter方法:

在对象初始化时定义

在对象定义后通过Object的__defineGetter__、__defineSetter__方法来追加定义

在使用对象初始化过程来定义Getter和Setter方法时唯一要做的事情就是在getter方法前面加上“get”,在setter方法前面加上“set”。

还有一点要注意的就是getter方法没有参数,setter方法必须有一个参数,也就是要设置的属性的新值。

例如:

复制代码 代码如下:

o={

value:9,

getb(){returnthis.value;},

setsetter(x){this.value=x;}

}

在对象定义后给对象添加getter或setter方法要通过两个特殊的方法__defineGetter__和__defineSetter__。这两个函数要求第一个是getter或setter的名称,以string给出,第二个参数是作为getter或setter的函数。

例如我们给Date对象添加一个year属性:

复制代码 代码如下:

Date.prototype.__defineGetter__('year',function(){returnthis.getFullYear();});

Date.prototype.__defineSetter__('year',function(y){this.setFullYear(y)});

varnow=newDate;

alert(now.year);

now.year=2006;

alert(now);

至于采用哪种形式主要取决于个人的编程风格,采用第一种形式结构紧凑,更容易理解。但是假如你想在对象定义以后再添加Getter或Setter,或者这个对象的原型不是你写的或是内置对象,那么只好采用第二种方式了。

下面是一个为Mozilla浏览器添加innerText属性的实现:

复制代码 代码如下:

HTMLElement.prototype.__defineGetter__

(

"innerText",function()

//defineagettermethodtogetthevalueofinnerText,

//soyoucanreaditnow!

{

vartextRange=this.ownerDocument.createRange();

//Usingrangetoretrievethecontentoftheobject

textRange.selectNodeContents(this);

//onlygetthecontentoftheobjectnode

returntextRange.toString();

//giveinnerTextthevalueofthenodecontent

}

);

【关于__defineGetter__ 和__defineSetter__的说明】相关文章:

js+cookies实现悬浮购物车的方法

javascript匹配车牌号正则表达式

JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)

获得当前页面URL地址的三个JS代码

Div+CSS+JS树型菜单,可刷新

IE中直接运行显示当前网页中的图片 推荐

初步使用bootstrap快速创建页面

模拟抽奖

JQuery中两个ul标签的li互相移动实现方法

移到这里,就会自动点击

精品推荐
分类导航