【问题标题】:JavaScript Object Method use super keyword [duplicate]JavaScript对象方法使用超级关键字[重复]
【发布时间】:2019-09-26 01:24:54
【问题描述】:

当我的对象方法是函数声明时,超级关键字正常工作。

const user = {
  name: "Murad"
};
const murad = {
  getName() {
    super.name
  },
  __proto__: user
};

但是当我想将函数声明更改为函数表达式时,JS返回错误

const user = {
  name: "Murad"
};
const murad = {
  getName: function() {
    super.name
  },
  __proto__: user
};

未捕获的 SyntaxError: 'super' 关键字在此处意外 为什么会这样?

【问题讨论】:

  • 很抱歉我更改了我的问题代码。你可以看到第一个版本正常工作,但第二个不是
  • 不是函数声明,是方法定义。

标签: javascript super


【解决方案1】:

super.prop 和 super[expr] 表达式在任何方法中都有效 定义在类和对象字面量中。 super MDN

在第一个示例中,它用于方法中,因此是一个有效的表达式

const user = {
  name: "Murad"
};
const murad = {
  getName() {
    return super.name
  },
  __proto__: user
};

console.log(murad.getName())

第二个不是 ECMAScript Method definition section 的方法语法

const user = {
  name: "Murad"
};
const murad = {
  getName: function() {
    super.name
  },
  __proto__: user
};

【讨论】:

  • 这太奇怪了,实际上你说第一个是方法,但第二个属性是有价值的。但是你可以在 MDN (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…) 中看到同样的事情。第一个只是速记。
  • @MuradSofiyev 等等,让我以更明智的方式更新它
  • @MuradSofiyev MDN 并没有说它们是同一回事。它说一个可以缩短为另一个。
猜你喜欢
  • 2023-01-25
  • 2023-03-23
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 2011-02-05
  • 1970-01-01
相关资源
最近更新 更多