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