当前位置: 代码迷 >> JavaScript >> JAVASCRIPT 中对象冒充应用解决办法
  详细解决方案

JAVASCRIPT 中对象冒充应用解决办法

热度:97   发布时间:2012-09-15 19:09:28.0
JAVASCRIPT 中对象冒充应用
function father (sex,name)
{

  this.name=name;
this.sex=sex;


this.hao=function ()
{
alert(this.sex+","+this.name );
}
  }
  function child (sex,name,age)
{
this.method=father; //使FATHER成为自己的方法
// 使NAME成为自己的属性

this.method(name);
this.method(sex);
delete this.method;
  this.age=age;
this.good=function () {
alert(this.age);
}
  }
var fa=new father("man","he");
var ch=new child("woman","wei","26");

fa.hao();
ch.hao();
ch.good();


  当同时传两中参数时有一个UNDEFINED,为什么呢?

------解决方案--------------------
this.method(name);
this.method(sex);
 
这两句合为一句,不然前一次的赋值就被覆盖,改为:
this.method(sex,name);

------解决方案--------------------
JScript code

function father (sex,name){
    this.name=name;
    this.sex=sex;
    this.hao=function (){
        alert(this.sex+","+this.name );
    }
}
function child (sex,name,age){
    this.method=father; //使FATHER成为自己的方法
    // 使NAME成为自己的属性
    //this.method(name);
    //this.method(sex);
    this.method(sex,name);
    delete this.method;
    this.age=age;
    this.good=function () {
        alert(this.age);
    }
}
var fa=new father("man","he");
var ch=new child("woman","wei","26");

fa.hao();
ch.hao();
ch.good();

------解决方案--------------------
伪继承是吧

this.method=father;
// 下面两行错了 你这样写 只相当于给father传递了一个参数sex 
this.method(name);
this.method(sex);

看到没你的函数: function father (sex,name)
this.method(sex , name)

建议你用apply或者call方法
  相关解决方案