为什么 class 是 JavaScript 中的保留字?

IT技术 javascript
2021-03-17 10:48:47

我计划使用 JavaScript 实现类继承接口。class是作为构造函数名称的完美词。

class = function (classname) {}; // create a class with classname
classA = new class("classA"); // create a class named classA

不幸的是,class是 JavaScript 中的保留字。

为什么 JavaScript 保留这个词class(因为它从不使用它)?

5个回答

它保留给面向未来的 ECMAScript

以下词在提议的扩展中用作关键字,因此保留以供将来采用这些扩展的可能性。

不过不要担心,如果您在 JavaScript 中使用最佳实践,您会将所有可访问的函数/变量/构造函数放在一个命名空间中,这将允许您使用任何您喜欢的名称:

foo = {};
foo['class'] = function(){...code...};
var myClass = new foo['class']();
请注意,Class它不是保留的(大写C),它可以毫无问题地用作变量或函数声明的标识符(实际上,建议将构造函数的名称大写)。现在,foo.RESERVEDWORD不适用于 ES3 实现,因为在点属性访问器的语法中不允许使用关键字(保留字和未来保留字),也不允许在对象字面量语法中使用(顺便说一句,这就是为什么在 JSON 格式中,必须引用键……)。这在 ES5 上发生了变化,现在可以访问任何有效的标识符名称,即使它是保留的,例如({if:1}).if == 1;
2021-05-14 10:48:47
这是规范的 HTML 版本中7.6.1.2 Future Reserved Words的直接链接ecma-international.org/ecma-262/5.1/#sec-7.6.1.2
2021-05-18 10:48:47

语言在进化。保留一些以后可能会用到的关键字是明智的。根据 ECMA 标准class是未来保留字。

如果您没有保留它们,则引入新关键字可能会与现有代码(可能已经将该词用于其他用途)发生冲突。发生在 Java 和assert.

非常真实的进化!我们现在可以使用class关键字在JavaScript代码开始ECMA6提到(又名ECMA 2015年)在这里
2021-05-01 10:48:47

现在它用于ECMAScript® 2015 语言规范

class Foo {
    constructor(bar) {
        this.bar = bar;
    }
}
new Foo(10).bar; // 10

class ECMAScript 规范保留作为未来关键字

保留字 - MDN

它在那里,以便将来可以在不破坏现有程序的情况下添加支持。请看下面的帖子

你也可以看看

https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words