javascript 一个对象方法通过另一个 javascript 对象

javascript one object method via other javascript object

var s = {

    fname:'Ashish',

    lname:'Gokhale',

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

}

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

上面是我的两个javascript对象。

我想在不从任何对象复制数据的情况下使用 p 变量的全名。

我希望这两个对象都将保留它们当前拥有的原始值。 有什么办法可以实现吗?

使用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设置为[=20中的此参数=].

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());