以文本方式查看主题 - ╋艺 镇╋ (http://wdystv.com/bbs/index.asp) -- ┣◇网站建设&Web语言 (http://wdystv.com/bbs/list.asp?boardid=4) ---- js中this的总结 (http://wdystv.com/bbs/dispbbs.asp?boardid=4&id=2561) |
-- 作者:admin -- 发布时间:2010/12/1 15:10:51 -- js中this的总结 在面向对象编程语言中,对于this关键字我们是非常熟悉的。比如C++、C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的。JavaScript也提供了这个this关键字,不过用起来就比经典OO语言中要"混乱"的多了。 下面就来看看,在JavaScript中各种this的使用方法有什么混乱之处? 1、在HTML元素事件属性中inline方式使用this关键字: <div onclick=" // 可以在里面使用this ">division element</div>
<div id="elmtDiv">division element</div> <script language="javascript"> var div = document.getElementById(\'elmtDiv\'); div.attachEvent(\'onclick\', EventHandler); function EventHandler() { // 在此使用this } </script>
<div id="elmtDiv">division element</div> <script language="javascript"> var div = document.getElementById(\'elmtDiv\'); div.onclick = function() { // 在此使用this }; </script>
function JSClass() { var myName = \'jsclass\'; this.m_Name = \'JSClass\'; } JSClass.prototype.ToString = function() { alert(myName + \', \' + this.m_Name); }; var jc = new JSClass(); jc.ToString();
|
-- 作者:admin -- 发布时间:2010/12/1 15:11:02 -- 5、为脚本引擎内部对象添加原形方法中的this关键字: Function.prototype.GetName =
function() { var fnName = this.toString(); fnName = fnName.substr(0, fnName.indexOf(\'(\')); fnName = fnName.replace(/^function/, \'\'); return fnName.replace(/(^\\s+)|(\\s+$)/g, \'\'); } function foo(){} alert(foo.GetName());
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() { alert(this.m_Text); }; var jc = new JSClass(); jc.Render(); jc.ToString();
<table width="100" height="100"> <tr> <td> <div style="width: expression(this.parentElement.width); height: expression(this.parentElement.height);"> division element</div> </td> </tr> </table>
function OuterFoo() { this.Name = \'Outer Name\'; function InnerFoo() { var Name = \'Inner Name\'; alert(Name + \', \' + this.Name); } return InnerFoo; } OuterFoo()();
来源:http://hcmfys.javaeye.com/blog/588820 |