Firefox下为dom添加innerText方法(javascript中getter、setter方法的定义)
在火狐下运行:
o={
value:9
}
Object.prototype.__defineGetter__("mm",function(){return"中华人民共和国"})
alert(o.mm)在火狐下运行,可以扩展innerText
第一种:
if(typeof(HTMLElement)!="undefined"&&!window.opera)
{
HTMLElement.prototype.__defineGetter__("innerText",function(){
returnthis.textContent;
}
);
HTMLElement.prototype.__defineSetter__("innerText",function(setValue){
this.textContent=setValue;
});
}
第二种:
if(typeofHTMLElement!="undefined"){
HTMLElement.prototype.innerText
getter=function(){
vartmp=this.replace(/<br>/gi,"/n");
returntmp.replace(/<[^>]+>/g,"");
}HTMLElement.prototype.innerText
setter=function(txtStr){
varparsedText=document.createTextNode(txtStr);
this="";
this.appendChild(parsedText);
}
}使用getter和setter(尽量不要这样使用,因为在JavaScript1.5的开发过程中,有一种简短的使用类似getter=或者setter=定义对象的方法。这样的语法在JavaScript1.5版本中会获得一个警告,以后的版本也不会支持,所以我们要避免这样的语法出现。):
varo={
a:7,
//下面两句是其实是实现对象的num属性
getnum(){returnthis.a+1;},
setnum(x){this.a=x/2;}
};
o.num=100;
alert(o.num)//在火狐中弹出51