首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

关于js的call方法有关问题

2013-04-02 
关于js的call方法问题//用函数定义类function Person(name,age){//this表示公开变量,外部可以直接通过实例

关于js的call方法问题
//用函数定义类
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());
[解决办法]
Person.call(p,'张三','18');
你调查一下call方法的用法就知道了
[解决办法]
修改成


//实例化
 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函数

热点排行