var s = {
fname:'Ashish',
lname:'Gokhale',
getFullName: function(){
return this.fname +' '+ this.lname;
}
}
var p = {fname: "Xyz", lname: "Abc"};
以上是我的两个javascript对象。
我希望使用p&#39变量的全名而不从任何对象复制数据。
我想要这样的方式,两个对象都将保留它们当前拥有的原始值。 有没有办法实现这个目标?
答案 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());
您可以使用的另一个选项是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());