我可以向对象方法添加属性吗?

时间:2019-11-13 02:08:51

标签: javascript

我有一个colors对象来存储一些常量,并且想让colors.greencolors.green.lightcolors.green.dark可用

我发现了很多函数属性的示例,但是它们似乎不适用于对象方法。

这是我认为可以使用的语法:

const colors = {
  green() {
    this.green.lighter = "#3aebc4"
    return "#FFFFFF"
  },
}

但是colors.green.lighter从未定义

3 个答案:

答案 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);