`
czllfy
  • 浏览: 108108 次
  • 来自: ...
社区版块
存档分类
最新评论

this使用帮助

    博客分类:
  • js
 
阅读更多
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>

 <BODY>
  <script>
  function JSClass()
   {
     this.m_Text = 'division element';
      this.m_Element = document.createElement('DIV');
      this.m_Element.innerHTML = this.m_Text;
        
      this.m_Element.attachEvent('onclick', this.ToString);
   }
   
   JSClass.prototype.Render = function()
   {
       document.body.appendChild(this.m_Element);
   }     

   JSClass.prototype.ToString = function()
   {
		if(this instanceof JSClass){
			alert(this.m_Text);
		}else{
			alert(obj.m_Text);
		}

	    
   };

  var jc = new JSClass();
   jc.Render(); 
   jc.ToString();
  </script>
 </BODY>
</HTML>


我想让div的onclick事件输出'division element',怎么处理
我对this还是不清楚呀
分享到:
评论
5 楼 tidus 2008-11-17  
//事件绑定时,this指向的是当前对象
//事件触发时,this指向的是window;

帮你up, 继续研究;

实例声明和调用实例方法都没什么可说的,元素的click事件的绑定到了一个实例的方法,那么通过addEventListener绑定到的方法是拷贝过后的,所以this指的是html元素,这个元素没有m_Text属性(m_Text属性是属于JSClass的实例的,即属于jc的),所以点击元素显示undefined,attachEvent绑定的事件会将函数复制到全局,此时this指的是window对象,点击元素也会显示“undefined”。只有在调用jc.ToString()方法是,this指的是jc这个对象,因为jc拥有m_Text,所以能够显示“division element”。 Long Way
4 楼 afcn0 2008-11-16  
给你弄错了,是这样的,你在div上面事件处理函数只能得到div这个对象,而这个对象和你new的对象之间没有关系,必须叫div下面有原来this对象的引用才可以找到
function JSClass()    
{    
  this.m_Text = 'division element';    
   this.m_Element = document.createElement('DIV');    
   this.m_Element.innerHTML = this.m_Text;    
   this.m_Element.thisWrap=this;      
   this.m_Element.onclick=this.ToString;    
}    
    
JSClass.prototype.Render = function()    
{    
    document.body.appendChild(this.m_Element);    
}         
 
JSClass.prototype.ToString = function()    
{    
         alert(this.thisWrap.m_Text);    
 
         
};   
另外,attachEvent上去的函数会丢失事件发生的html对象this.
3 楼 tidus 2008-11-16  
//alert(obj.m_Text);
alert(new JSClass().m_Text);
2 楼 czllfy 2008-11-16  
afcn0 写道
#   function JSClass() 
#    { 
#      this.m_Text = 'division element'; 
#       this.m_Element = document.createElement('DIV'); 
#       this.m_Element.innerHTML = this.m_Text; 
#          
#       this.m_Element.onclick=this.ToString; 
#    } 
#     
#    JSClass.prototype.Render = function() 
#    { 
#        document.body.appendChild(this.m_Element); 
#    }      
#  
#    JSClass.prototype.ToString = function() 
#    { 
#         //if(this instanceof JSClass){ 
#             alert(this.m_Text); 
#        // }else{ 
#       //      alert(obj.m_Text); 
#       //  } 
#  
#          
#    }; 


afcn0 你好
你的方法我测试过发现返回的还是undefined.
附上测试的代码

<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>

 <BODY>
<script>
function JSClass()  
{  
  this.m_Text = 'division element';  
   this.m_Element = document.createElement('DIV');  
   this.m_Element.innerHTML = this.m_Text;  
       
   this.m_Element.onclick=this.ToString;  
}  
  
JSClass.prototype.Render = function()  
{  
    document.body.appendChild(this.m_Element);  
}       

JSClass.prototype.ToString = function()  
{  
         alert(this.m_Text);  

       
}; 
var jc = new JSClass();   
   jc.Render();    
   jc.ToString();   
</script>
 </BODY>
</HTML>



1 楼 afcn0 2008-11-15  
#   function JSClass() 
#    { 
#      this.m_Text = 'division element'; 
#       this.m_Element = document.createElement('DIV'); 
#       this.m_Element.innerHTML = this.m_Text; 
#          
#       this.m_Element.onclick=this.ToString; 
#    } 
#     
#    JSClass.prototype.Render = function() 
#    { 
#        document.body.appendChild(this.m_Element); 
#    }      
#  
#    JSClass.prototype.ToString = function() 
#    { 
#         //if(this instanceof JSClass){ 
#             alert(this.m_Text); 
#        // }else{ 
#       //      alert(obj.m_Text); 
#       //  } 
#  
#          
#    }; 

相关推荐

    Java中this关键字使用小结

    总的来说,`this` 关键字是 Java 中用于表示对象实例自身的一个关键字,它帮助我们访问成员变量、区分同名变量、在构造器间传递参数以及实现链式方法调用。理解并熟练运用 `this` 关键字对于编写清晰、高效的 Java ...

    this指针的使用

    这时,`this`可以帮助我们指向正确的位置: ```cpp class DynamicStudent { public: DynamicStudent(string n) : name(new char[n.length()+1]) { strcpy(this-&gt;name, n.c_str()); // 使用this指针为动态分配的...

    Java4Android 16_this的使用方法

    在Java编程语言中,`this`关键字是一个非常重要的概念,尤其在开发Android应用时更为常见。`this`关键字主要用于引用当前对象的实例变量...熟练掌握`this`的使用,能够帮助开发者写出更加清晰、简洁和易于维护的代码。

    java this关键字的使用

    初学者在学习Java时,理解和掌握`this`关键字的使用是至关重要的,因为它可以帮助我们更好地编写和理解类与对象之间的关系。下面我们将深入探讨`this`关键字的几个主要用法。 1. **成员变量的访问** 当类中的局部...

    java this方法的使用

    `this`关键字的使用能够帮助我们更好地理解和操作类的成员,包括实例变量、方法和构造器。以下是对`this`关键字及其应用的详细解释。 1. **表示当前对象** `this`关键字在类的方法或构造器中使用时,它总是指向...

    java语言this的使用

    ### Java语言中this关键字的使用 在Java编程语言中,`this`关键字具有重要的作用,它代表当前对象的引用,可以被理解为当前对象的别名。`this`关键字可以帮助我们更好地管理和操作类中的成员变量及方法。接下来,...

    package-this, MSDN联机帮助下载工具

    "package-this"工具的使用非常简单,用户只需要指定想要下载的MSDN库版本,如Visual Studio .NET 2005或2008,工具就会自动抓取相关的帮助文档并生成CHM文件。这样,即便在没有网络的环境中,开发者依然可以查阅到...

    PSP使用GPS导航自制软件MapThis v0.5.20

    用户在使用MapThis时,需注意设备的电量管理,以免在途中电量耗尽。 10. 安全提醒:虽然PSP的GPS导航功能很实用,但在驾驶时使用必须遵守交通法规,确保安全驾驶,避免因分心操作导致交通事故。 总的来说,MapThis...

    this 引用句柄例子大解析

    在本文中,我们将深入解析`this`引用句柄的使用、含义及其在实际编程中的应用。 `this`的基本概念: 1. `this`关键字代表了当前对象的引用,也就是说,它总是指向方法调用时的对象实例。 2. 当在类的成员变量和局部...

    C#关键字this用法

    在本文中,我们将深入探讨`this`关键字的用法,通过示例程序来帮助理解其功能和应用场景。 首先,`this`关键字是一个隐式指针,它指向当前对象实例。当你在类的方法或属性中引用一个成员时,如果该成员与方法参数或...

    C++中this指针的用法

    在多线程环境中,`this`指针的使用可以帮助区分不同的对象实例。例如,在线程回调函数中,通过传递`this`指针,可以确保每个线程正确地操作属于自己的对象实例。 总结来说,`this`指针在C++中扮演着核心角色,它...

    this指针的使用.zip

    在C++编程语言中,`this`指针是一个非常关键的概念,它在对象成员函数内部起着至关重要的作用。`this`是一个隐含的指针,类型为指向...正确使用`this`可以帮助提高代码的可读性和可维护性,同时避免潜在的错误和陷阱。

    js中的this

    JavaScript 中的 `this` 关键字是一个非常重要的概念,它在不同上下文环境中有着不同的指向。...深入理解 `this` 的工作原理,能帮助开发者更好地掌握 JavaScript,并写出更加健壮、易于维护的代码。

    C#this指针用法

    `this`关键字在C#中是一个非常强大且灵活的功能,它不仅帮助解决局部变量和类成员变量名称冲突的问题,还在构造函数链式调用和索引器定义中发挥着关键作用。理解并熟练掌握`this`关键字的使用,对于编写清晰、高效、...

    JAVA中this的使用.zip

    理解`this`的使用是掌握面向对象编程的关键部分。以下是对`this`在Java中使用的详细解释: 1. **成员变量与局部变量的区分:** 当类中的局部变量(方法内的变量)和成员变量(类级别的变量)名称相同时,`this`...

    Java中的this和super的用法 

    使用 this 和 super 关键字可以帮助我们在编程中避免一些常见的错误,例如,在某个方法中,如果形参名与当前对象的成员变量名相同,使用 this 关键字可以明确地指明当前对象的成员变量名。 此外,使用 this 和 ...

    this关键字的用法.pdf

    - **调用成员变量**:在类的方法中,如果需要访问一个非静态成员变量,可以使用`this`关键字前缀,例如`this.MyVariable`。这有助于避免与局部变量名称的冲突。 - **调用成员方法**:同样,我们也可以通过`this`...

    Edit-This-Cookie-1.5.0 chrome插件

    EditThisCookie 帮助用户识别可能的追踪 cookie,从而更好地保护个人隐私。 总之,EditThisCookie 1.5.0 是一个实用的 Chrome 插件,它赋予用户对网站 cookies 的强大控制权。无论你是开发人员还是普通用户,都能...

    在窗体标题栏中添加帮助按钮,C#源代码this.HelpButton = true;

    结合使用`HelpProvider`和`HelpButton`,可以为用户提供更全面、更具交互性的帮助体验。 总的来说,C#为我们提供了简单易用的工具来构建用户友好的应用程序。通过学习和实践,我们可以不断优化用户界面,提升软件的...

    java中的this关键字

    在Java编程语言中,`this`关键字是一个非常关键的概念,它代表了当前对象的引用。...通过以上几个方面,我们可以看到`this`在不同场景下的应用,希望这些示例能帮助你更好地理解`this`关键字在Java中的作用。

Global site tag (gtag.js) - Google Analytics