您的位置:首页 > Web前端 > javascript > 正文

js中的this与with关键字

更多 时间:2013-8-28 类别:Web前端 浏览量:969

js中的this与with关键字

js中的this与with关键字

在JavaScript的对象系统中,this关键字用在两种地方:

- 在构造器函数中,指代新创建的对象实例
- 在对象的方法被调用时,指代调用该方法的对象实例

如果一个函数被作为普通函数(而不是对象方法)调用,那么在函数中的this关键字将指向window对象。与此相同的,如果this关键字不在任何函数中,那么他也指向window对象。

javascript 中this 关键字的用法:


1.<li onclick="// 可以在里面使用this">liision element</li> this 指向li

2、this 指向window对象,若要引用li对象this.event.srcElement;

 

  • JScript 代码   复制
  • 
    <li id="elmtli">liision element</li> 
    <script language="javascript"> 
    var li = document.getElementById('elmtli'); 
    li.attachEvent('onclick', EventHandler); //attachEvent把li的onclick事件和一个方法绑定 
    function EventHandler() 
    { 
    // 在此使用this 
    } 
    </script>
    			

     

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

     

  • JScript 代码   复制
  • 
    //产生的方法同上,但此处的this 指向li 
    <li id="elmtli">liision element</li> 
    <script language="javascript"> 
    var li = document.getElementById('elmtli'); 
    li.onclick = function() 
    { 
    // 在此使用this 
    }; 
    </script>
    
    		
  • 4、类定义中使用this关键字:

     

  • JScript 代码   复制
  • 
    //这是JavaScript模拟类定义中对this的使用,这个和其它的OO语言中的情况非常的相识。但是这里要求成员属性和方法必须使用this关键字来引用,运行上面的程序会被告知myName未定义。
    function JSClass() 
    { 
    var myName = 'jsclass'; 
    this.m_Name = 'JSClass'; 
    } 
    JSClass.prototype.ToString = function() 
    { 
    alert(myName + ', ' + this.m_Name); 
    }; 
    var jc = new JSClass(); 
    jc.ToString(); 
    
    		
  • 5、为脚本引擎内部对象添加原形方法中的this关键字:

     

  • JScript 代码   复制
  • 
    //这里的this指代的是被添加原形的类的实例,和4中类定义有些相似,没有什么太特别的地方。
    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()); 
    			

     

  • with关键字

    1)简要说明


    with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。


    2)语法格式


    with(object instance)
    {
    //代码块
    }
    有时候,在一个程序代码中,需要多次使用某对象的属性或方法,照以前的写法,都是通过:对象.属性或者对象.方法这样的方式来分别获得该对象的属性和方法,着实有点麻烦,学习了with语句后,可以通过类似如下的方式来实现:
    with(objInstance)
    {
    var str = 属性1;
    .....
    } 去除了多次写对象名的麻烦。

    3)with关键字实例:

     

  • JScript 代码   复制
  • 
    <script language="javascript"> 
    <!-- 
    function News() { 
    this.title = "郁闻天下"; 
    this.keywords = "郁闷"; 
    this.source = url; 
    } 
    var ymcn=new News(); 
    with(ymcn) 
    { 
    var str = "标题: " + title + "<br>"; 
    str += "关键字:" + keywords + "<br>"; 
    str += "来源:" + source; 
    document.write(str); 
    } 
    //--> 
    </script> 
    
    		
  •  

    标签:js this with
    您可能感兴趣