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

相关推荐