var Class ={create:function(){ return function(){this.init.apply(this,arguments); }  }};
var Fade =Class.create();
Fade.prototype={init:function(a,b,c){alert(arguments.length);}};
var f=new Fade("1",2);
这段代码程序输出:2. 没有问题!
但是我想问一下 Class 里面的 this.init.apply(this,arguments) 中的this 是怎么变成了Fade的..这里的this指代的是什么?
是因为var Fade=Class.create(); 这句 ,所以 this就指向Fade了吗?小弟JS接触不久,求解答!

解决方案 »

  1.   

    www.baidu.com    打上“js中的this".
      

  2.   

    var Fade = function()
    {
         this.init.apply(this,arguments)
    }Fade.prototype={
            init:function(a,b,c)
               {
                 alert(arguments.length);
               }
           };var f=new Fade("1",2);调用create以后变成了这样 , 这个this自然是 Fade啊
      

  3.   


    //你这样看,下面两句是相同的。你说this是不是指向Fade呢
    var Fade = Class.create();
    var Fade = function () {
                this.init.apply(this, arguments);
            }
      

  4.   

    1. Fade = function(){
        this.init.apply(this,arguments);
    };所以fade 只是一个函数,可以用他来充当构造器。2. JS中的this始终指向当前对象。
    3. new 运算符的工作过程是这样:
       3.1 初始化一个空对象并将this指向这个空对象。
       3.2 将空对象交给构造器进行加工。   打个比方,C++等面向对象的语言中,对象的一些属性
    和方法从他创建的哪一个就定下来了,就好比老鼠生下来
    就是老鼠,生下来就注定会打洞。
       但JS中一切对象开始都是平等的,大家一
    开始什么都没有(或者只有简答的一些公共属性),都是
    白纸一张(空对象),需要你用不同的培训机构(构造器)
    对他进行培训。构造器里边详细的介绍了你该做什么,this
    就是指你自己。
        
        这和我们人很像,没有人生下来是将军,必须通过不断的
    磨练才可以。