javascript中的__defineGetter__和__defineSetter__介绍
分类:新闻中心

Getter是一种获得壹本性情的值的措施,Setter是一种设置叁性格能的值的不二等秘书籍。可感到别的预订义的着力目的或顾客自定义对象定义getter和setter方法,进而为现成的指标增加新的质量。

作者:anbutu
来源:
关键字: JavaScript   Mozilla __defineGetter__ __defineSetter__

作者:anbutu
来源:
关键字: JavaScript   Mozilla __defineGetter__ __defineSetter__

javascript中的__defineGetter__和__defineSetter__介绍,definegetter

Getter是一种获得八个属性的值的办法,Setter是一种设置六特性质的值的点子。可认为别的预订义的基本目的或顾客自定义对象定义getter和setter方法,进而为依存的靶子加多新的习性。

有二种艺术来定义Getter或Setter方法:

1.在目的初叶化时定义
2.在目的定义后透过Object的__defineGetter__、__defineSetter__措施来充实定义

在运用对象初阶化进度来定义Getter和Setter方法时独一要做的事务正是在getter方法前面加上“get”,在setter方法后边加上“set”。

再有点要注意的正是getter方法未有参数,setter方法必须有四个参数,也正是要安装的属性的新值。

例如:

复制代码 代码如下:

   o = { 
        value:9, 
        get b() {return this.value;}, 
        set setter(x) {this.value = x;} 
    } 

在目的定义后给目的增添getter或setter方法要经过四个优良的办法__defineGetter__和__defineSetter__。这七个函数供给首先个是getter或setter的称谓,以string给出,第贰个参数是作为getter或setter的函数。

举例大家给Date对象增多八个year属性:

复制代码 代码如下:

Date.prototype.__defineGetter__('year', function() {return this.getFullYear();}); 
    Date.prototype.__defineSetter__('year', function(y) {this.setFullYear(y)}); 
     
    var now = new Date; 
    alert(now.year); 
    now.year = 2006; 
    alert(now);

关于选择哪个种类方式主要在于个人的编制程序风格,采纳第一种样式结构紧密,更便于明白。不过要是你想在指标定义未来再增加Getter或Setter,恐怕那一个目的的原型不是你写的可能内置对象,那么只可以利用第三种方法了。

上边是一个为Mozilla浏览器加多innerText属性的得以实现:

复制代码 代码如下:

 HTMLElement.prototype.__defineGetter__  
    ( 
       "innerText",function() 
       //define a getter method to get the value of innerText,  
       //so you can read it now!  
       { 
          var textRange = this.ownerDocument.createRange(); 
          //Using range to retrieve the content of the object 
          textRange.selectNodeContents(this); 
          //only get the content of the object node 
          return textRange.toString(); 
          // give innerText the value of the node content 
       }

有三种情势来定义Getter或Setter方法:

Getter是一种得到叁特品质的值的不二等秘书诀,Setter是一种设置叁天性格的值的方法。可以为别的预约义的基本指标或顾客自定义对象定义getter和setter方法,进而为现成的对象增多新的品质。
有三种办法来定义Getter或Setter方法:

Getter是一种得到一个属性的值的不二诀窍,Setter是一种设置壹性子质的值的方法。可感到其余预订义的主导指标或客商自定义对象定义getter和setter方法,进而为依存的目的增添新的习性。
有三种艺术来定义Getter或Setter方法:

ie9对象不扶助"__defineGetter__"与__defineSetter__天性或格局怎化解

你这么些代码应该是相当久从前的了吗。

__defineGetter__ 和 __defineSetter__ 都以不正规的,以至不真实于 ECMAScript 中,Mozilla 已经不援助选取那二种方法。

Firefox 是支撑 parentElement 和 outerHTML 的,所以没有要求自定义。

有关 innerText 和任何需求 FF 包容的 IE 方法,你要先剖断 userAgent

// 确认是 Firefoxif(/firefox/i.test(navigator.userAgent)) { HTMLElement.prototype.__defineGetter__("innerText", function() { return this.textContent; });} var foo = document.getElementById("foo");// text of fooalert(foo.textContent);// text of fooalert(foo.innerText);
<div id="foo">text of foo</div>  

1.在目的开端化时定义
2.在指标定义后透过Object的__defineGetter__、__defineSetter__措施来充实定义

在对象初始化时定义 
在对象定义后透过Object的__defineGetter__、__defineSetter__主意来增添定义 
在行使对象初步化进程来定义Getter和Setter方法时独一要做的专门的职业便是在getter方法后面加上“get”,在setter方法后面加上“set”。
再有点要留心的正是getter方法未有参数,setter方法必需有二个参数,也正是要安装的质量的新值。
例如:

在目的开始化时定义 
在对象定义后经过Object的__defineGetter__、__defineSetter__艺术来充实定义 
在动用对象初阶化进程来定义Getter和Setter方法时独一要做的事情便是在getter方法前边加上“get”,在setter方法前面加上“set”。
还会有有个别要留意的正是getter方法未有参数,setter方法必得有贰个参数,也正是要设置的习性的新值。
例如:

JS中的HTMLElementprototype__defineGetter__是什

blog.csdn.net/...9.aspx

去拜会吧  

Getter是一种获得叁个属性的值的不二秘籍,Setter是一种设置贰性子质的值的方法。可以为...

在接纳对象初始化进度来定义Getter和Setter方法时唯一要做的事务正是在getter方法前边加上“get”,在setter方法前面加上“set”。

复制代码 代码如下:

复制代码 代码如下:

再有一点要细心的正是getter方法未有参数,setter方法必得有一个参数,也正是要安装的习性的新值。

o = {    
    value:9,    
    get b() {return this.value;},    
    set setter(x) {this.value = x;}    
}    

o = {    
    value:9,    
    get b() {return this.value;},    
    set setter(x) {this.value = x;}    
}    

例如:

在对象定义后给目的增加getter或setter方法要由此三个新鲜的点子__defineGetter__和__defineSetter__。这七个函数需要首先个是getter或setter的名目,以string给出,第二个参数是当做getter或setter的函数。
举个例子大家给Date对象加多贰个year属性:

在指标定义后给指标增添getter或setter方法要经过八个特其余点子__defineGetter__和__defineSetter__。那五个函数供给首先个是getter或setter的称谓,以string给出,第1个参数是当做getter或setter的函数。
譬喻说我们给Date对象增多叁个year属性:

复制代码 代码如下:

复制代码 代码如下:

复制代码 代码如下:

   o = { 
        value:9, 
        get b() {return this.value;}, 
        set setter(x) {this.value = x;} 
    } 

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

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

在指标定义后给目的增加getter或setter方法要经过多少个奇特的办法__defineGetter__和__defineSetter__。那八个函数需要首先个是getter或setter的名号,以string给出,第二个参数是当做getter或setter的函数。

var now = new Date;    
alert(now.year);    
now.year = 2006;    
alert(now);    

var now = new Date;    
alert(now.year);    
now.year = 2006;    
alert(now);    

举例大家给Date对象加多二个year属性:

关于采取哪个种类情势主要取决于个人的编制程序风格,采纳第一种样式结构紧密,更易于掌握。然而倘诺你想在对象定义未来再增多Getter或Setter,恐怕这一个目的的原型不是你写的或是内置对象,那么只可以利用第二种格局了。
上面是叁个为Mozilla浏览器增添innerText属性的贯彻:

关于选用哪一种样式主要在于个人的编程风格,采用第一种样式结构紧凑,更便于领悟。可是只要你想在指标定义以往再增加Getter或Setter,恐怕那么些指标的原型不是你写的也许内置对象,那么只可以采纳第几种办法了。
下边是四个为Mozilla浏览器增加innerText属性的达成:

复制代码 代码如下:

复制代码 代码如下:

复制代码 代码如下:

Date.prototype.__defineGetter__('year', function() {return this.getFullYear();}); 
    Date.prototype.__defineSetter__('year', function(y) {this.setFullYear(y)}); 
     
    var now = new Date; 
    alert(now.year); 
    now.year = 2006; 
    alert(now);

HTMLElement.prototype.__defineGetter__     
(    
   "innerText",function()    
   //define a getter method to get the value of innerText,     
   //so you can read it now!     
   {    
      var textRange = this.ownerDocument.createRange();    
      //Using range to retrieve the content of the object    
      textRange.selectNodeContents(this);    
      //only get the content of the object node    
      return textRange.toString();    
      // give innerText the value of the node content    
   }    
); 

HTMLElement.prototype.__defineGetter__     
(    
   "innerText",function()    
   //define a getter method to get the value of innerText,     
   //so you can read it now!     
   {    
      var textRange = this.ownerDocument.createRange();    
      //Using range to retrieve the content of the object    
      textRange.selectNodeContents(this);    
      //only get the content of the object node    
      return textRange.toString();    
      // give innerText the value of the node content    
   }    
); 

关于选拔哪个种类样式首要在于个人的编制程序风格,采纳第一种样式结构紧密,更便于精晓。可是倘令你想在指标定义今后再增添Getter或Setter,或然这几个目的的原型不是您写的或然内置对象,那么只可以动用第三种方法了。

来源: 关键字:JavaScriptMozilla__defineGetter____defineSetter__ Getter是一种获得壹本性能的值的艺术,Setter是...

您恐怕感兴趣的稿子:

  • 贯彻了多个PHP5的getter/setter基类的代码
  • JavaScript之Getters和Setters 平台帮助等详细介绍
  • javascript中的__defineGetter__和__defineSetter__介绍
  • ECMAScript5中的对象存取器属性:getter和setter介绍
  • JavaScript中setter和getter方法介绍
  • jQuery 3.0 的 setter和getter 格局详解
  • 使用node+vue.js实现SPA应用
  • 基于Vue.js的表格分页组件
  • Vue.js每一日必学之组件与组件间的通讯
  • 研讨因Vue.js引发关于getter和setter的牵挂

上边是两个为Mozilla浏览器增多innerText属性的兑现:

复制代码 代码如下:

 HTMLElement.prototype.__defineGetter__  
    ( 
       "innerText",function() 
       //define a getter method to get the value of innerText,  
       //so you can read it now!  
       { 
          var textRange = this.ownerDocument.createRange(); 
          //Using range to retrieve the content of the object 
          textRange.selectNodeContents(this); 
          //only get the content of the object node 
          return textRange.toString(); 
          // give innerText the value of the node content 
       }

你可能感兴趣的小说:

  • JavaScript中setter和getter方法介绍
  • JavaScript之Getters和Setters 平台帮衬等详细介绍
  • 商量因Vue.js引发关于getter和setter的思量
  • Javascript中的getter和setter初识
  • JavaScript的setter与getter方法
  • 浅谈JS对象增添getter与setter的5种方法
  • js中getter和setter用法实例剖判

本文由美高梅网址发布于新闻中心,转载请注明出处:javascript中的__defineGetter__和__defineSetter__介绍

上一篇:浏览器加载的时间线,CSS以及img对DOMContentLoaded事 下一篇:没有了
猜你喜欢
热门排行
精彩图文