Vix*_*xed 5 javascript typescript ecmascript-6
假设我有以下对象:
let obj={
childone: (value) => {
return value+1;
},
childtwo: (value) => {
return value+3;
},
childsingle: (value) => {
return value+1;
}
};
Run Code Online (Sandbox Code Playgroud)
是否有任何方法在同一声明中设置obj.childsingle相等obj.childone?
我正试图childsingle=childone在对象声明中实现.
我也尝试get按照重复的建议答案使用.
但是,在使用之后:
let obj = {
childone: (value) => {
return value+1;
},
childtwo: (value) => {
return value+3;
},
get childsingle() {
return this.childone;
}
};
Run Code Online (Sandbox Code Playgroud)
我得到handleError TypeError: childsingle is not a function.
你可能会想到这样的事情:
let obj={
childone: (value) => {
return value+1;
},
childtwo: (value) => {
return value+3;
},
childsingle: obj.childone
}
};
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。你必须分两步完成。
赋值运算符 ( ) 的工作方式=如下。它使用运算符的右侧,计算其值并将该值(在您的情况下是对对象的引用)分配给左侧的变量。
因此,在汇编赋值运算符的右侧时,该obj变量不存在。所以你会得到一个错误。
这也行不通
let obj={
childone: (value) => {
return value+1;
},
childtwo: (value) => {
return value+3;
},
childsingle: this.childone
}
};
Run Code Online (Sandbox Code Playgroud)
因为this不会引用当前对象。
这不起作用,因为childone没有定义
let obj={
childone: (value) => {
return value+1;
},
childtwo: (value) => {
return value+3;
},
childsingle: childone
}
};
Run Code Online (Sandbox Code Playgroud)
这是要走的路:
let obj={
childone: (value) => {
return value+1;
},
childtwo: (value) => {
return value+3;
},
};
obj.childsingle = obj.childone;
Run Code Online (Sandbox Code Playgroud)
但请注意,如果您计划更改该childone功能并认为该childsingle功能也会更改,则事实并非如此。
在更改之前childone,我们有对象的两个键(childone 和 childsingle),它们是对同一函数的引用。但 childone 和 childsing 没有其他关系。如果您更改 chilone 这将是对新函数的引用,并且 childsingle 将保持相同的旧函数
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |