吸气剂是获取
属性值的一种
方法,而定值器是
设置属性值的一种方法。对于任何预定义的
核心对象或
用户自定义对象,都可以定义吸气剂和二传手方法,以便向现有对象添加新属性。
有两种方法定义吸气剂或二传手方法:
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的 /节点内容的价值
}