在Javascript中__definegetter__和__definesetter__介绍

吸气剂是获取属性值的一种方法,而定值器是设置属性值的一种方法。对于任何预定义的核心对象或用户自定义对象,都可以定义吸气剂和二传手方法,以便向现有对象添加新属性。

有两种方法定义吸气剂或二传手方法:

1。对象初始化的定义

2。在对象的定义是由__definegetter__定义对象的方法,__definesetter__

当我们使用对象初始化来定义吸气剂和set方法时,惟一要做的就是向get方法添加get,并将set添加到set方法中。

另一个需要注意的是,方法没有参数,而且set方法必须有一个参数,即要设置的属性的新值。

例如:

复制代码代码如下所示:

O = {

值:9,

获取b(){返回这个值;},

设置setter(x){ this.value = x;}

}



在定义对象添加一个getter或setter方法的目的是通过特殊的方法,__definegetter__和__definesetter__。两者的功能要求,一是getter或setter的名字,给出的字符串,第二个参数是一个getter或setter函数。

例如,我们将日期属性添加到日期对象中:

复制代码代码如下所示:

日期。原型。__definegetter__('year功能(){ return this.getfullyear();});

日期。原型。__definesetter__('year功能(Y){ this.setfullyear(Y)});



var现在=新日期;

警报(现在,一年);

now.year = 2006;

警戒(现在);



至于哪种形式主要是由个人的编程风格所采用,它在第一种形式中更为紧凑,更易于理解,但是如果你想在对象定义之后添加消气剂或设置器,或者对象的原型不是你写的或内置的,它必须以第二种方式进行。

以下是添加innerText属性Mozilla浏览器的实现:

复制代码代码如下所示:

__definegetter__ HtmlElement。原型。



InnerText

/ /定义得到innerText价值getter方法,

所以现在你可以读它了!

{

VaR TextRange = this.ownerdocument.createrange();

使用范围来检索对象的内容

textrange.selectnodecontents(本);

只获取对象节点的内容

返回textrange.tostring();

给innerText的 /节点内容的价值

}