zoukankan      html  css  js  c++  java
  • javascript中的this

    关于js中的this,记住这句话:那个对象实例调用this所在的函数,那么this就代表哪个对象实例。
    function test() { 
    	alert(this.x); 
    } 
    var o = {}; 
    o.x = 1; 
    o.m = test; 
    o.m(); //1 
    
    
    console.group("xxxx");
    function test() { 
    	this.x = 1; 
    } 
    var o = new test(); 
    //alert(o.x);//1 
    console.log(o.x);
    console.groupEnd("xxxx");
    
    
    function test3(){
      this.x = 3;
    }
    test3();
    alert(x);//这个函数中,this指的window,可以这样理解,test3() 即 window.test3();
    		//所以test3()中的this就指的window,所以x是一个全局变量。
    
    
    var o = {prop:37};
    function my(){
      return this.prop;
      //alert(this.prop);
    }
    o.f = my;
    console.log(o.f());//37,注意o.f()和o.f的差别。暂时还没完全理解这二者的具体差异。
    console.log(o.f);  //my()
    
    
    function c(){
      this.a = 37;
      return {a:40};//我的理解是:相当于重新给a进行赋值,值被修改为40了。
    }
    o = new c();
    console.log(o.a);
    
    
    function c(){
      this.a = 37;
      this.a = 90;
    }
    o = new c();
    console.log(o.a);
    

      还有一篇关于this的链接:http://segmentfault.com/a/1190000000638443,这个写得比较好,具体内容如下:

    前段时间回答的一个关于this的问题,便总结记录下。
    在javascript的函数中,除了声明时定义的形参之外,每个函数还可以接收两个附加的参数:this和arguments。这里就讲一下this的作用以及不同场景下它的不同指向。this的取值(即它的指向取决于调用的模式),在javascript中明确this指向大致有四种情况:

    1.函数调用模式的时候,this指向window
    
    function aa(){
      console.log(this)
    }
    aa()                 //window
    2.方法调用模式的时候,this指向方法所在的对象
    
    var a={};
    a.name = 'hello';
    a.getName = function(){
      console.log(this.name)
    }
    a.getName()         //'hello'
    3.构造函数模式的时候,this指向新生成的实例
    
    function Aaa(name){
      this.name= name;
      this.getName=function(){
        console.log(this.name)
      }
    }
    var a = new Aaa('kitty');
    a.getName()        //  'kitty'
    var b = new Aaa('bobo');
    b.getName()        //  'bobo'
    4.apply/call调用模式的时候,this指向apply/call方法中的第一个参数
    
    var list1 = {name:'andy'}
    var list2 = {name:'peter'}
    
    function d(){
      console.log(this.name)
    }
    d.call(list1)     //  'andy' 
    d.call(list2)     //  'peter' 
    

      

  • 相关阅读:
    201771010125王瑜《面向对象程序设计(Java)》第十周学习总结
    201771010125王瑜《面向对象程序设计(Java)》第九周学习总结
    201771010125王瑜《面向对象程序设计(Java)》第八周学习总结
    7 Python外壳:代码结构
    6 python容器
    元组
    列表
    4 python基本元素之变量
    3 关于操作系统基本了解
    1 python是什么?
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4469281.html
Copyright © 2011-2022 走看看