let objFirst = {
name: 'Bill',
age: 55,
getName: function () {
console.log(this.name)
},
getAge: function () {
console.log(this.age)
}
}
function returnProp (obj) {
//...code
}
let objSecond = returnProp (objFirst );
objSecond.getName(); //Bill
objSecond.getAge(); //55
我知道可以这样解决
function returnProp (obj) {
return obj
}
我想用'call','apply'或'bind'方法来做,但是不知道怎么做,有人可以解释吗?
我尝试了类似的方法,但是没有用。
function returnProp (obj) {
obj.getName.bind(objFirst)
obj.getAge.bind(objFirst)
}
答案 0 :(得分:0)
我不确定我是否正确理解了您,但我希望这会有所帮助:
这将创建一个仅包含所需属性的新对象,该属性在调用时调用原始对象的方法。
let objFirst = {
name: 'Bill',
age: 55,
getName: function() {
console.log(this.name)
},
getAge: function() {
console.log(this.age)
}
}
function returnProp(obj) {
return {
getName: obj.getName.bind(obj),
getAge: obj.getAge.bind(obj)
}
}
let objSecond = returnProp(objFirst);
objSecond.getName(); //Bill
objSecond.getAge(); //55
答案 1 :(得分:0)
据我了解,您想克隆第一个对象而不是引用它。您应该查看lodash(_)。 Lodash具有cloneDeep()方法,可用于克隆整个对象。
du -b --max-depth=0 ./main_folder/data | awk '{print $1;}'