javascript一个对象方法通过其他JavaScript对象

时间:2016-05-21 17:08:26

标签: javascript javascript-objects

var s = {

    fname:'Ashish',

    lname:'Gokhale',

    getFullName: function(){
        return this.fname +' '+ this.lname;
    }

}

var p = {fname: "Xyz", lname: "Abc"};

以上是我的两个javascript对象。

我希望使用p&#39变量的全名而不从任何对象复制数据。

我想要这样的方式,两个对象都将保留它们当前拥有的原始值。 有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

使用 Object.assign() 合并数组,这会更新两个属性。

var s = {
  fname: 'Ashish',
  lname: 'Gokhale',
  getFullName: function() {
    return this.fname + ' ' + this.lname;
  }
}
var p = {
  fname: "Xyz",
  lname: "Abc"
};

Object.assign(s, p);

console.log(s.getFullName());

UPDATE:如果您不想更新原始对象,则可以通过将空对象作为第一个参数传递来生成新对象。

var s = {
  fname: 'Ashish',
  lname: 'Gokhale',
  getFullName: function() {
    return this.fname + ' ' + this.lname;
  }
}
var p = {
  fname: "Xyz",
  lname: "Abc"
};

console.log(Object.assign({}, s, p).getFullName());
对于较旧的浏览器,请检查polyfill option of the method

您可以使用的另一个选项是bind()方法,它有助于更​​新this关键字值,将p设置为 bind()中的此参数

var s = {
  fname: 'Ashish',
  lname: 'Gokhale',
  getFullName: function() {
    return this.fname + ' ' + this.lname;
  }
}
var p = {
  fname: "Xyz",
  lname: "Abc"
};

var fn = s.getFullName.bind(p);

console.log(fn());