我宣布tasks
对象:
var tasks = {
test: () => {
/// ....
}
};
在test
函数中,我想设置tasks.test.description
属性。到目前为止,我已经尝试过:
var tasks = {
test: () => {
// need to set tasks.test.description here
//
// tried without success:
// tasks.test.description = '...';
// this.description = '...';
// arguments.callee.description = '...';
}
};
以及:
var tasks = {
test: function xxx() {
// all methods from example above, plus:
// xxx.description = '...';
}
};
从功能范围外部访问时,描述始终未定义。
console.log(tasks.test.description); // => undefined
有没有办法在对象文字内的函数定义中设置description属性?
答案 0 :(得分:2)
您的第一种方法几乎是正确的,但您必须调用该功能才能执行任何操作。
var tasks = {
test: () => {
tasks.test.description = '...';
}
};
tasks.test();
console.log("The value of tasks.test.description is " + tasks.test.description);
答案 1 :(得分:2)
可以使用Object.assign将函数与对象组合:
test: Object.assign(() => {
/// ....
}, {
description: "whatever"
})
答案 2 :(得分:0)
console.log(tasks.test.description);返回undefined是您定义的对象,但是在您首次运行tastks.test()方法之前,将创建description属性。要向对象方法添加属性描述,请尝试以下方法:
const tasks = {
test() {
//....
}
};
tasks.test.description = 'asd';
或者
const tasks = {
test() {
this.test.description = 'asd';
}
};
tasks.test();
console.log(tasks.test.description);
答案 3 :(得分:0)
你的一次尝试几乎是正确的。您只需致电tasks.test()
即可设置tasks.test.description
。
var tasks = {
test: function xxx() {
xxx.description = '...';
}
};
tasks.test();
console.log(tasks.test.description);
如果您想在不调用test
the answer by Jonas W.的情况下设置该属性即可。