我有一个colors
对象来存储一些常量,并且想让colors.green
,colors.green.light
和colors.green.dark
可用
我发现了很多函数属性的示例,但是它们似乎不适用于对象方法。
这是我认为可以使用的语法:
const colors = {
green() {
this.green.lighter = "#3aebc4"
return "#FFFFFF"
},
}
但是colors.green.lighter
从未定义
答案 0 :(得分:2)
您为打火机设置的值的作用域为功能green()
。除非您执行green()
,否则永远不会设置该值,但要了解,由于它的作用域是green()函数,因此无法访问它。
请参见下面的代码段
const colors = {
green() {
this.green.lighter = "#3aebc4"
return "#FFFFFF";
},
}
console.log(colors.green());
console.log(colors.green().lighter);
希望能解释功能部分,但我假设您想要一个像这样的对象:
const colors = {
green: {
normal: 'green',
lighter: '#3aebc4',
}
};
答案 1 :(得分:1)
是的,可以。
回想一下,在Javascript中,函数/方法也是对象。因此,您可以为其赋予属性。
正如查理·施利瑟(Charlie Schliesser)的回答所说,您只能在调用colors.green()之后定义它。
您也可以
colors.green.lighter = "whatever"
colors.green.darker = "whatever 2"
然后通过
获得结果colors.green.lighter // whtever
colors.green.darker // whatever 2
答案 2 :(得分:0)
尝试一下:
const colors={
green(){
this.green.lighter='#fff';
this.green.dark="#000";
return this;
}
}
colors.green();
console.log(colors.green.lighter);