js中this:js中this的总结

   在面向对象编程语言中,对于this关键字我们是非常熟悉的。比如c++、c#和java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的。javascript也提供了这个this关键字,不过用起来就比经典oo语言中要"混乱"的多了。
    下面就来看看,在javascript中各种this的使用方法有什么混乱之处?
    1、在html元素事件属性中inline方式使用this关键字:  <div >division element</div>
    我们一般比较常用的方法是在此使用:javascirpt: eventhandler(this),这样的形式。不过这里其实可以写任何合法的javascript语句,要是高兴在此定义个类也可以(不过将会是个内部类)。这里的原理是脚本引擎生成了一个div实例对象的匿名成员方法,而onclick指向这个方法。
    2、用dom方式在事件处理函数中使用this关键字:
<div id="elmtdiv">division element</div>
<script language="javascript">
var div = document.getelementbyid('elmtdiv');
div.attachevent('onclick', eventhandler);
function eventhandler()
{
// 在此使用this
}
</script>
    这时的eventhandler()方法中的this关键字,指示的对象是ie的window对象。这是因为eventhandler只是一个普通的函数,对于attachevent后,脚本引擎对它的调用和div对象本身没有任何的关系。同时你可以再看看eventhandler的caller属性,它是等于null的。如果我们要在这个方法中获得div对象引用,应该使用:this.event.srcelement。
    3、用dhtml方式在事件处理函数中使用this关键字:
<div id="elmtdiv">division element</div>
<script language="javascript">
var div = document.getelementbyid('elmtdiv');
div.onclick = function()
{
// 在此使用this
};
</script>
    这里的this关键字指示的内容是div元素对象实例,在脚本中使用dhtml方式直接为div.onclick赋值一个eventhandler的方法,等于为div对象实例添加一个成员方法。这种方式和第一种方法的区别是,第一种方法是使用html方式,而这里是dhtml方式,后者脚本解析引擎不会再生成匿名方法。 本文链接http://www.cxybl.com/html/wyzz/JavaScript_Ajax/20120605/28266.html

时间: 2024-11-02 23:49:48

js中this:js中this的总结的相关文章

jsp-JSP中编写JS代码过程中,调用了一个JSP表达式,发现一个问题,麻烦各位大神解答

问题描述 JSP中编写JS代码过程中,调用了一个JSP表达式,发现一个问题,麻烦各位大神解答 背景: 楼主使用Myelipse新建了一个Web项目,在编写一个JSP文件的时候遇到一个问题,首先是使用了img,并且写了一个事件,代码如下: <imgclass="poke" src="poke/back.jpg" title="hit" id="play_id_3" onClick="change_pic()&qu

lash轮播+ js+ xml+-几个flash轮播,求把XML中的参数直接写入js或者静态html中

问题描述 几个flash轮播,求把XML中的参数直接写入js或者静态html中 js部分: <!-- var so = new SWFObject(""/home/home_features.swf""visualMovie""935""470""9""#ffffff""); so.addParam(""wmode""tr

使用HTML5的JS选择器操作页面中的元素

使用HTML5的JS选择器操作页面中的元素. 文件命名为:querySelector.html,可在Chrome浏览器中预览效果. <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>使用HTML5的JS选择器操作页面中的元素</title> </head> <body>

在自定义Server Control中捆绑JS文件 Step by Step

js|server 注:本文基于.NET 2.0 和 VS2005 我们在编写 Server Control 的时候难免要用到一些客户端脚本(javascript),如何把脚本和编译好的dll一起发布就成了一个问题.把一段一段的javascript block写在cs文件里是一件很"丑陋"的事情,javascript就应呆在*.js文件里.js文件怎样才能"打包"到dll里呢?查了很多文档,最后实践下来发现有很多细节是需要注意的.整理出来,免得大家走弯路.废话无多,

Flash中实现JS的图片滚动效果

js 网页中的图片滚动效果,js的对象不太熟,就用flash来了. 大体的流程. 图片加载,效果层加载,设定效果层的_x,_y,使之于图片一一对应. 然后鼠标事件,鼠标经过,stopMove,鼠标点击,openPIC in IE. 图片循环不见断的实现模型: var picNum:Number;//总图片数,解析xml可得.  var picMargin:Number=5;//设置pic的间隔;  if(pic._x<(0-pic._width)){  pic._x=(pic._width+pi

C++中调用JS代码的问题

前段时间开发了一个COM组件配合web前端使用,遇到了C++中调用JS代码的问题,在网上查了很多资料,现 总结一下,留作以后察看. C++中调用JS代码主要有两种情况:1. IE线程中调用:2. 其他线程调用 1. IE线程中调用:这种情况网上已经有很多资料,下面列出示列代码: C++代码 STDMETHODIMP CJsInvoker::InvokeJsFunc(LONG para1, LONG para2, VARIANT jsFunction, LONG* retValue) { CCom

JS及J2EE开发中解决乱码的小方法

1.设置HttpServletResponse.setContextType("text/html: charset=utf-8"): 2.在web页面用encodeURIComponent()对查询字符串进行编码.HttpServletRequest.getParameter (name)对特殊字符被进行替换.(如:+)自动替换成" "(空白字符串). 3.在进行查询字符串进行传输时,尽量对其进行base64编码,减少网络传输量.进行base64编码之后 ,必须进

ASP.NET中配合JS实现页面计时(定时)自动跳转

  这篇文章主要介绍了ASP.NET中配合JS实现页面计时(定时)自动跳转,本文主要依靠JS实现需求,只是在ASP.NET中实现而已,需要的朋友可以参考下 ASP.NET实现页面自动跳转(经测试,在VS2008 C#环境下可通过) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <%@ Page Language="C#" AutoEven

js限制input标签中只能输入中文

  这篇文章主要介绍了js限制input标签中只能输入中文的的相关资料,需要的朋友可以参考下 方法很简单,这里就不多BB了,直接奉上示例 ? 1 2 3 4 5 6 7 8 9 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>只能输入中文</title> </head>

JS中获取数据库中的值的方法

在项目中遇到一个问题,需要在JS中读取数据库中的值,然后再把值返回到页面中,解决方案如下:使用Ajax方法来实现,需要用到ajax.dll(一个ajax技术开发的帮助类库).   实施过程如下:     1.引用Ajax.dll     2.在App_Code写具体的方法,最好单独建立一个类文件,然后写具体方法.       复制代码 代码如下: public class AjaxMethod www.jb51.net {     public AjaxMethod()     {