JavaScript 中 this 关键字使用方法详解 JavaScript 中 this 关键字使用方法详解在面向对象编程语言中,对于 this 关键字我们是非常熟悉的。比如 C++ 、 C#和 Java 等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的。 JavaScript 也提供了这个 this 关键字,不过用起来就比经典 OO语言中要" 混乱" 的多了。下面就来看看,在 JavaScript 中各种 this 的使用方法有什么混乱之处? 1 、在 HTML 元素事件属性中 inline 方式使用 this 关键字: <div onclick=" // 可以在里面使用 this ">division element</div> 我们一般比较常用的方法是在此使用: javascirpt: EventHandler(this) , 这样的形式。不过这里其实可以写任何合法的 JavaScript 语句, 要是高兴在此定义个类也可以( 不过将会是个内部类) 。这里的原理是脚本引擎生成了一个 div 实例对象的匿名成员方法,而 onclick 指向这个方法。 2 、用 DOM 方式在事件处理函数中使用 this 关键字: <div id="elmtDiv">division element</div> <script language="javascript"> var div = ('elmtDiv'); ('onclick', EventHandler); function EventHandler() { // 在此使用 this } </script> 这时的 EventHandler() 方法中的 this 关键字, 指示的对象是 IE 的 window 对象。这是因为 EventHandler 只是一个普通的函数,对于 attachEvent 后, 脚本引擎对它的调用和 div 对象本身没有任何的关系。同时你可以再看看 EventHandler 的 caller 属性, 它是等于 nul l 的。如果我们要在这个方法中获得 div 对象引用,应该使用: 。 3 、用 DHTML 方式在事件处理函数中使用 this 关键字: <div id="elmtDiv">division element</div> <script language="javascript"> var div = ('elmtDiv'); = function() { // 在此使用 this }; </script> 这里的 this 关键字指示的内容是 div 元素对象实例,在脚本中使用 DHTM L 方式直接为 k 赋值一个 EventHandle r 的方法, 等于为 div 对象实例添加一个成员方法。这种方式和第一种方法的区别是,第一种方法是使用 HTML 方式,而这里是 DHTML 方式,后者脚本解析引擎不会再生成匿名方法。 4 、类定义中使用 this 关键字: function JSClass() { var myName = 'jsclass'; = 'JSClass'; } = function() { alert(myName + ','+ ); }; var jc= new JSClass(); (); 这是 JavaScript 模拟类定义中对 this 的使用,这个和其它的 OO 语言中的情况非常的相识。但是这里要求成员属性和方法必须使用 this 关键字来引用,运行上面的程序会被告知 myName 未定义。 5 、为脚本引擎内部对象添加原形方法中的 this 关键字: = function() { var fnName = (); fnName = (0, ('(')); fnName = (/^function/, ''); return (/(^\s+)|(\s+$)/g, ''); } function foo(){} alert(()); 这里的 this 指代的是被添加原形的类的实例,和 4 中类定义有些相似,没有什么太特别
JavaScript中this关键字使用方法详解 来自淘豆网m.daumloan.com转载请标明出处.