function Employ(name,salary){
this.name=name;
this.salary=salary;
this.getSalary=function(){
return this.salary;
};
this.addSalary=addSalary;
}
function addSalary(addtion){
return this.salary+=addtion;
}
var e1 = new Employ("cici",100);
var e2 = new Employ("titi",50);
e1.getSalary.owner="e1";
e2.getSalary.owner="e2";
alert(e1.getSalary.owner);
alert(e2.getSalary.owner);

e1.addSalary(30).owner="e1";
                                e2.addSalary(30).owner="e2";
                                alert(e1.getSalary.owner);//**
alert(e2.getSalary.owner);//**
为什么 **标记的两行不输出同样的值"e2"?
而是一个输出 "e1" 一个输出"e2"?

解决方案 »

  1.   

    e1.getSalary.owner="e1"; 
    e2.getSalary.owner="e2"; alert(e1.getSalary.owner);//** e1
    alert(e2.getSalary.owner);//** e2  ,本来就不一样啊
    你是不是问反了????? 
      

  2.   

    搞懂了是这样:
    function Employ(name,salary){
    this.name=name;
    this.salary=salary;
    this.getSalary=function(){
    return this.salary;
    };
    this.addSalary=addSalary;
    }
    function addSalary(addtion){
    return this.salary+=addtion;
    }
    var e1 = new Employ("cici",100);
    var e2 = new Employ("titi",50);
                                   //给 getSalary函数添加属性
    e1.getSalary.owner="e1";
    alert(e1.getSalary.owner);//输出"e1"
    alert(e2.getSalary.owner);//输出undifined
    //如果e1 e2两个对象指向同一个getSalary函数对象 则都应该输出"e1"                                 //给addSalary函数添加属性
    e1.addSalary.owner="e1";
    alert(e1.addSalary.owner);//输出"e1"
    alert(e2.addSalary.owner);//输出"e1"
                                   //e1 e2 指向同一个addSalary 函数