www.5197.com-澳门新蒲京娱乐场官网

热门关键词: www.5197.com,澳门新蒲京娱乐场官网

JS中this的下结论www.5197.com

那儿的EventHandler(卡塔尔国方法中的this关键字,提示的靶子是IE的window对象。这是因为伊夫ntHandler只是多个平时性的函数,对于attach伊夫nt后,脚本引擎对它的调用和div对象自丙寅有此外的关系。同一时间您能够再看看EventHandler的caller属性,它是十三分null的。借使大家要在这里个方法中获得div对象引用,应该利用:this.event.srcElement。 3、用DHTML方式在事件处理函数中采用this关键字:

    7、CSS的expression表明式中利用this关键字:

就算如此在始发攻读的时候以为对比难,但倘诺明白了,用起来是充裕方便和含义明确的。JavaScript也提供了那几个this关键字,可是用起来就比精粹OO语言中要"混乱"的多了。下边就来走访,在JavaScript中种种this的施用办法有啥样混乱之处? 1、在HTML元素事件性质中inline形式使用this关键字:

  {

division element

}  

此间的this关键字提示的从头到尾的经过是div成分对象实例,在剧本中使用DHTML格局直接为div.onclick赋值七个伊夫ntHandler的办法,等于为div对象实例增多贰个成员方法。这种措施和率先种情势的界别是,第意气风发种格局是使用HTML格局,而这里是DHTML方式,后面一个脚本拆解拆解分析引擎不会再生成无名氏方法。 4、类定义中应用this关键字: function JSClass() { var myName = 'jsclass'; this.m_Name = 'JSClass'; } JSClass.prototype.ToString = function() { alert(myName ', ' this.m_Name卡塔尔国; }; var jc = new JSClass; 那是JavaScript模拟类定义中对this的选用,那一个和别的的OO语言中的情状十分的相识。但是此地供给成员属性和情势必得接纳this关键字来引用,运维方面包车型客车次序会被报告myName未定义。 5、为脚本引擎内部对象增加原形方法中的this关键字: Function.prototype.GetName = function(卡塔尔 { var fnName = this.toString(卡塔尔国; fnName = fnName.substr(0, fnName.indexOf; fnName = fnName.replace; return fnName.replace; } function foo(卡塔尔(英语:State of Qatar){} alert; 这里的this指代的是被加多原形的类的实例,和4中类定义有个别相像,没有何样太极其的地点。 6、结合2&4,说二个相比较吸引的this关键字选择: function JSClass() { this.m_Text = 'division element'; this.m_Element = document.createElement; this.m_Element.innerHTML = this.m_Text; this.m_Element.attach伊芙nt('onclick', this.ToString卡塔尔; } JSClass.prototype.Render = function(卡塔尔 { document.body.appendChild; } JSClass.prototype.ToString = function(卡塔尔国 { alert; }; var jc = new JSClass; jc.ToString(卡塔尔国; 作者就说说结果,页面运营后会彰显:"division element",鲜明后点击文字"division element",将交易会示:"undefined"。 7、CSS的expression表达式中选拔this关键字:

div.attachEvent('onclick', EventHandler);  

此处的this看作和1中的同样就足以了,它也是指代div成分对象实例自身。 8、函数中的内部函数中运用this关键字: function OuterFoo(卡塔尔 { this.Name = 'Outer Name'; function InnerFoo(卡塔尔国 { var Name = 'Inner Name'; alert(Name ', ' this.Name卡塔尔(قطر‎; } return InnerFoo; } OuterFoo; 运行结果突显是:"Inner Name, Outer Name"。按我们在第22中学的讲授,这里的结果若是是"Inner Name, undefined"仿佛更客观些吧?可是正确的结果实在是前面八个,这是由于JavaScript变量功能域的标题调节的 详细摸底推荐参看"原本JScript中的关键字'var'照旧有小说的"一文及回复

      {

division element

 jc.Render();   

division element

    

division element

  

笔者们日常相比常用的措施是在这里接受:javascirpt: 伊芙ntHandler,那样的款型。可是这里其实能够写任何官方的JavaScript语句,要是欣然在这里概念个类也足以。这里的原理是本子引擎生成了三个div实例对象的无名成员方法,而onclick指向那个方法。 2、用DOM方式在事件管理函数中央银行使this关键字:

      return fnName.replace(/(^s )|(s $)/g, '');

     document.body.appendChild(this.m_Element);  

OuterFoo()(); 

          </td>

...

  {

Function.prototype.GetName = function()  

  {

      this.m_Element.attachEvent('onclick', this.ToString);

 var jc = new JSClass();  

    fnName = fnName.replace(/^function/, '');   

<div id="elmtDiv">division element</div>  

{  

    return InnerFoo;  

 };

 

                  height: expression(this.parentElement.height);">  

 var div = document.getElementById('elmtDiv');

    }  

 

在面向对象编制程序语言中,对于this关键字大家是这个熟稔的。譬如C 、C#和Java等都提供了那些第一字,固然在开端学习的时候感觉相比难,但万一精通了,用起来是丰裕便于和意义鲜明的。JavaScript也提供了那个this关键字,但是用起来就比精髓OO语言中要"混乱"的多了。

 

 

  function JSClass()

function foo(){}  

 

 这里的this关键字提示的剧情是div成分对象实例,在本子中选取DHTML方式直接为div.onclick赋值贰个EventHandler的措施,等于为div对象实例增添一个分子方法。这种措施和率先种艺术的分别是,第风流浪漫种艺术是运用HTML方式,而那边是DHTML情势,后面一个脚本深入分析引擎不会再生成无名氏方法。

 </script>

      alert(myName ', ' this.m_Name);

 

                    height: expression(this.parentElement.height);">

 

    4、类定义中央银行使this关键字:

  }    

          <td>

    </tr>  

  {

 

   // 在那采用this  

function JSClass()  

  </table>

此处的this看作和1中的同样就可以了,它也是指代div成分对象实例本身。

 

  jc.Render();

 

  {

 

      return InnerFoo;

<div id="elmtDiv">division element</div>  

      fnName = fnName.replace(/^function/, '');

  jc.ToString();

 

 

       

     this.m_Element.attachEvent('onclick', this.ToString);  

 

Js代码 

 

 

 div.attachEvent('onclick', EventHandler);

 

 

div.onclick = function()  

};  

 {

  function foo(){}

    var fnName = this.toString();   

    fnName = fnName.substr(0, fnName.indexOf('('));   

                division element</div>  

Js代码 

 

 jc.ToString(); 

                  division element</div>

    上面就来探视,在JavaScript中各个this的采纳方法有如何混乱之处?

          var Name = 'Inner Name';

 

  Function.prototype.GetName = function()

      var fnName = this.toString();

 var div = document.getElementById('elmtDiv');

 

此刻的伊芙ntHandler(卡塔尔(قطر‎方法中的this关键字,提醒的指标是IE的window对象。这是因为伊夫ntHandler只是四个平常的函数,对于attachEvent后,脚本引擎对它的调用和div对象自己并未有其余的关联。同一时候您可以再看看伊芙ntHandler的caller属性,它是相等null的。要是我们要在此个点子中获取div对象引用,应该使用:this.event.srcElement。

      alert(this.m_Text);

      this.Name = 'Outer Name';

function OuterFoo()  

 }  

 

      this.m_Name = 'JSClass';

jc.ToString(); 

 <script language="javascript">

            <div style="width: expression(this.parentElement.width);   

  alert(foo.GetName());    

 

Js代码 

  运转结果彰显是:"Inner Name, Outer Name" 。按大家在第22中学的疏解,这里的结果生机勃勃旦是"Inner Name, undefined"就像更合理些吧?然则正确的结果实乃前面二个,那是出于JavaScript变量功用域的主题材料决定的,详细摸底推荐参看"原本JScript中的关键字'var'依旧有成文的"一文及回复。

         

那是JavaScript模拟类定义中对this的使用,那个和其它的OO语言中的情状异常的相知。可是此地必要成员属性和章程必需使用this关键字来引用,运维方面包车型大巴顺序会被报告myName未定义。

var jc = new JSClass();  

 

    {  

 

 

Js代码 

 function EventHandler()

// 能够在里边使用this  

      function InnerFoo()

</table> 

  OuterFoo()();

   // 在那选拔this  

      fnName = fnName.substr(0, fnName.indexOf('('));

{  

{  

 小编就说说结果,页面运转后会呈现:"division element",明确后点击文字"division element",将会来得:"undefined"。

<table width="100" height="100">  

 

     this.m_Element = document.createElement('DIV');  

 

{  

    6、结合2&4,说叁个相比吸引的this关键字接收:

}  

 

 

  }

  {

 ">division element</div>  大家经常相比较常用的措施是在这里采纳:javascirpt: 伊夫ntHandler(this卡塔尔国,那样的款型。可是这里实在能够写任何官方的JavaScript语句,假使向往在这里概念个类也得以(但是将会是个里面类卡塔尔国。这里的原理是本子引擎生成了多个div实例对象的佚名成员方法 ,而onclick指向那几个格局。

        alert(Name ', ' this.Name);  

 JSClass.prototype.Render = function()  

 {  

 

    this.m_Name = 'JSClass';  

 function JSClass()

     this.m_Text = 'division element';  

    <tr>  

      <tr>

JSClass.prototype.ToString = function()  

    var myName = 'jsclass';  

      }

      </tr>

              <div style="width: expression(this.parentElement.width);

{  

 

{  

    2、用DOM格局在事件管理函数中运用this关键字:

    这里的this指代的是被加上原形的类的实例,和4中类定义有些相同,未有怎么太极其之处。

 

    this.Name = 'Outer Name';  

        </td>  

 }       

    // 在这里选用this

</script> 

 

 

">division element</div> 

<script language="javascript">  

 

  }

      this.m_Element = document.createElement('DIV');

 

 JSClass.prototype.ToString = function()  

1、在HTML成分事件性质中inline方式使用this关键字:

<div onclick="  

 

 

        <td>  

 }

 

 

 // 能够在里面使用this

}  

 {  

     alert(this.m_Text);  

 };  

 <div id="elmtDiv">division element</div>

 

    function InnerFoo()  

 <div onclick="

<script language="javascript">  

    alert(myName ', ' this.m_Name);  

    说了这么多JavaScript中this的用法,其实this最根本的性状依然和OO语言中的定义相切合的。之所以有如此多看似混乱的采纳方法,是因为JavaScript语言(解释器和语言本身的剧情卡塔尔(قطر‎本身在落实上是遵从OO的(Object-based卡塔尔,连它的全部数据类型都以指标,也可能有Object那样一个super Object。可是这一个语言在运行上(runtime卡塔尔国,就从未有过依据完善的OO特点,所以就应际而生了this的代替混乱。

 

 

var div = document.getElementById('elmtDiv');  

     this.m_Element.innerHTML = this.m_Text;  

  jc.ToString();

 

 

 {  

Js代码 

  JSClass.prototype.ToString = function()

  };

 

var div = document.getElementById('elmtDiv');  

 

 

 </script>

        var Name = 'Inner Name';   

  <table width="100" height="100">

    // 在那采纳this

  };

</script> 

 

    return fnName.replace(/(^s )|(s $)/g, '');  

          alert(Name ', ' this.Name);

Js代码 

  function OuterFoo()

 <div id="elmtDiv">division element</div>

 

    8、函数中的内部函数中使用this关键字:

};  

      this.m_Element.innerHTML = this.m_Text;

Js代码 

 

    3、用DHTML方式在事件处理函数中运用this关键字:

function JSClass()  

      this.m_Text = 'division element';

 

function EventHandler()  

 {

  var jc = new JSClass();

      document.body.appendChild(this.m_Element);

 <script language="javascript">

  }

 

 

 

 

 

      var myName = 'jsclass';

Js代码 

    5、为脚本引擎内部对象增添原形方法 中的this关键字:

  {

  }

 

  JSClass.prototype.ToString = function()

}  

  JSClass.prototype.Render = function()

 

  var jc = new JSClass();

 div.onclick = function()

alert(foo.GetName());     

 

本文由www.5197.com发布于服务器运维,转载请注明出处:JS中this的下结论www.5197.com