我正在尝试这段JavaScript代码:
class User(name) {
this.name = name;
}
var class = new User("Kimo");
以上内容在JavaScript书籍中使用,我只是在玩它。
firefox 6.0.2(来自控制台)拒绝将'class'关键字作为变量名称(抱怨语法错误),而chrome 13.0.782.220m(来自开发人员工具)根本没有抱怨。< / p>
这让我想到,哪一个是对的?由于JavaScript中的类的概念不存在或者与其他OOP语言不同。另一方面,阻止开发人员使用它可能更明智。
我想知道为什么firefox和chrome之间的这种不同方法(我知道他们使用不同的引擎)。
由于
答案 0 :(得分:3)
首先,您不能像这样在Javascript中创建类。创建一个对象:
var User = {...};
或构造函数:
function User() {...}
类是来自about.com的保留字(某些未在ECMA 262中列出,但在JScript中列出)和MDC - 保留供将来使用。确实,JavaScript暂时没有类。但是这个词在某种意义上是保留的,有一天它可以有这样的。
Mozilla对规则的处理比其他浏览器更严格,并且会出现语法错误。
另外:
JavaScript不仅仅是对象 Oriented 编程语言(OOP),它是Prototype-based Programming language。
另一方面,防止开发人员使用它可能更明智。
由于JavaScript是由浏览器解释的,我不认为可以禁止使用保留字。在编译的代码中,您可以让编译器在产品可以使用之前就此类事情与您意见不一致。
另一件事 - 您可以在编辑器上编写JavaScript代码,但没有能力告诉您,您的代码有错误,或者您对变量使用保留字。
答案 1 :(得分:0)
错误是正确的行为。 Class是ECMAScript中的受限制关键字。
答案 2 :(得分:0)
Firefox还没有实现Class支持,如果你检查ecma6 browser support又称javascript(它是一个新的realease,它会有更多的例如class:D),你会发现mozilla的Class是不可能的,希望很快可用,ecma 6处于测试阶段,所以在所有浏览器都支持所有功能之前会有一段时间