//用函数定义类
function Person(name,age){
//this表示公开变量,外部可以直接通过实例化访问
this.name=name;
this.age=age;
//var表示私有变量,外部可以通过公开方法访问
var a=1;
var f=2;
this.b=function(){
return a;
}
return a+f;
}
//原型对象也有构造函数
alert(typeof Person);
Person.prototype.c=function(){
return this.age;
}//实例化
var p=new Person("张三",18);
alert(Person.call(p));//这里如果把call放在这,下面的p.name弹出的是undefined,如果把这句放在最后则不会出现问题,求解?
alert(p.name);
alert(p.a);
alert(p.b());
alert(p.c());

解决方案 »

  1.   

    Person.call(p,'张三','18');
    你调查一下call方法的用法就知道了
      

  2.   

    修改成//实例化
     var p=new Person("张三",18);
     alert(Person.call(p,'name',20));//这里如果把call放在这,下面的p.name弹出的是undefined,如果把这句放在最后则不会出现问题,求解?
     alert(p.name);
     alert(p.a);
     alert(p.b());
     alert(p.c()); 就可以看到效果了
    你的这种情形类似下面的语句
    p.pfunc = Person;
    p.pfunc();
    相当于给对象p调用了空参数的person函数