我根据JAVA写的类
function me(){
    var age ='16';
    var name = 'wy';
    function work(){
        alert(age);
        alert(name);
    };
    function love(){
        work();//调用上面的方法
    };
}var wo = me new();
wo.love();
//输出结果 16  wy这个肯定是错的,但是我想的是这样的效果,大家能否给个答案,谢谢

解决方案 »

  1.   

    function me(){ 
        this.age ='16'; 
        this.name = 'wy'; 
        function work(){ 
            alert(this.age); 
            alert(this.name); 
        }; 
    this.love = function(){
    work.call(this)

    } var wo =new me(); 
    wo.love(); 
      

  2.   

     如果有参数 怎么处理?
    function work(age){ 
        alert(age);
    }; this.love = function(){
            work(age).call(this)
    }  这样吗?
      

  3.   

    function me(){ 
        this.age ='16'; 
        this.name = 'wy'; 
        function work(a1,a2,a3,a4){ 
    alert(a1+'  '+a2+'  '+a3+'  '+a4);
            alert(this.age); 
            alert(this.name); 
        }; 
        this.love = function(){
            work.apply(this,Array.prototype.slice.call(arguments));
        } 
    } var wo =new me(); 
    wo.love("^_^","-_-","-o-",":)");
      

  4.   

    问个弱智的问题,
    work.apply
    work.call
    非要这样调用里面的方法吗? 
      

  5.   

    那有没有简单,容易理解的方法
    和JAVA中的this.方法名   这样调用的O(∩_∩)O哈哈~
      

  6.   

    当然了,你是这么写的
    function work(){
        alert(age);
        alert(name);
    }; 
    应该这么写就不用work.apply和work.call这么调用了,因为work里面用到了age和name属性!!work方法中的this应该是me对象的实例,所以要调用apply传me的this!!
    一楼的代码是正确的,不过
    function work(){ 
            alert(this.age); 
            alert(this.name); 
    }; 
    这个函数没有必要这么写,应该和love的形式是一样的!!即:
    this.function = work(){
            alert(this.age); 
            alert(this.name); 
    }
    这样就不用apply和call方法了!!
      

  7.   

      function me(){ 
        this.age ='16'; 
        this.name = 'wy'; 
        work = function(){ 
            alert(this.age); 
            alert(this.name); 
        }; 

    var wo =new me(); 
    wo.work();现在我想这样调用这个方法,这样调用时错的,我应该怎么调用work呢?
      

  8.   

    这么写当然不行了啊,这是一个闭包了,work函数应该是this.work = function(){};这样work才是me的一个方法
    work中的this是变来变去的,不像java中的this一直不变