【问题标题】:Is it possible to initialize an object as a function with properties?是否可以将对象初始化为具有属性的函数?
【发布时间】:2018-12-29 13:22:14
【问题描述】:

是否有可能将对象初始化为具有属性的函数? 像这样的:

var a = {
    () => {
        return "I am function!";
    },
    prop1: "I am property in function object",
    prop2: 10
}

alert(a()); // => I am function!
alert(a.prop1); // => I am property in function object

我知道我可以这样做:

var a = () => "I am function!";
a.prop1 = "I am property in function object";
a.prop2 = 10;

我只是想知道这是否可能。

【问题讨论】:

  • 你不能把一个普通的对象变成一个函数,但是你可以把一个函数当作一个对象,并给它添加任意属性。

标签: javascript


【解决方案1】:

不,具有属性(或使对象可调用)的函数没有文字语法。但是,您可以使用 Object.assign 将所有内容放在一个语句中:

const a = Object.assign(() => {
    return "I am function!";
}, {
    prop1: "I am property in function object",
    prop2: 10
});

console.log(a()); // => I am function!
console.log(a.prop1); // => I am property in function object

【讨论】:

    【解决方案2】:

    不,不是。使用内部 [[call]] 属性创建对象的唯一方法是函数字面量或通过类/对象方法声明。

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      相关资源
      最近更新 更多