网上不是说prototype的方法是实例方法要new的之后才能用,但我今天看EXTJS源码时发现,可以直接调用!ext=function(id,name){
this.id=id;
this.name=name;
};
ext.prototype={
show:function()
{
 alert(this.id+" is "+this.name);
}
}
var ob={
id:"123456789",
name:"wowovivi"
}
ext.prototype.show.apply(ob);

解决方案 »

  1.   

    我知道了,这个ob就相当于NEW的实体!
      

  2.   

    网上查查apply和call怎么用吧,不是ob就相当于NEW的实例,而是show方法里面的this.is,this.name中的this指的是ob,你打印一下alert(this==ob)看下是不是true。
      

  3.   

    你再打印下alert(ob instainceof ext);如果ob是实例的话,返回的是true,不是则返回false。然后你再写个var b = new ext();再打印下alert(b instanceof ext);看下是什么值
      

  4.   

    alert(ob instainceof ext);
    改成
    alert(ob instanceof ext);写错了
      

  5.   


    ext=function(id,name){
        this.id=id;
        this.name=name;
    };
    ext.prototype={
        show:function()
        {
            alert(this.id+" is "+this.name);
        }
    }
    var ob={
        id:"123456789",
        name:"wowovivi"
    }
    ext.prototype.show.apply(ob);//ext.prototype是一个对象,有个show方法,自然就能通过ext.prototype.show来调用该方法。一般类的prototype都是一个对象,当通过prototype来调用其方法时,请不要把prototype再看的那么神奇,它也只是一个对象而已。
      

  6.   

    ext.prototype.show
    对应
    show:function()
    {
        alert(this.id+" is "+this.name);
    }
    改变了上下文
    ext.prototype.show.apply(ob)
    所以能方位到ob里的id和name