繁体   English   中英

ECMAScript类

[英]ECMAScript class

我有以下代码,当网页加载时,这些代码应将汽车制造商和当前速度打印到控制台。 什么都没有打印到控制台。 如果我将新对象声明放入函数中,则不会打印。

<!DOCTYPE html>
<html>
<head>
<script type="application/ecmascript;version=6">

class Car {
    constructor(make) {
    this.make = make;
    this.currentSpeed = 20;
    }

    printCurrentSpeed(){

    console.log(this.make + 'is going ' + this.currentSpeed + 'kmh.');
    }

}

var stang = new Car('Mustang');
stang.printCurrentSpeed();

</script>

    <title>
    </title>
</head>
<body>

</body>
</html>

当前可用的浏览器尚不支持ES2015(前ES6)类。 如果要使用它们,则必须使用我们称为transpiler的程序:该程序会自动将ES2015源代码转换为ES5,以便当前的浏览器可以运行它。

目前最著名的是巴别塔 另一个是Traceur (由Google提供)。 两者都很好。

请注意,您不必使用ES2015实际上课。 ES2015类只是围绕我们所谓的原型的语法糖。 这是没有class关键字的示例:

function Car(make) {
    this.make = make;
    this.currentSpeed = 20;
}

Car.prototype.printCurrentSpeed = function() {
    console.log(this.make + 'is going ' + this.currentSpeed + 'kmh.');
};

var stang = new Car('Mustang');
stang.printCurrentSpeed();

class关键字是es6。 目前,它仅在稳定的浏览器Chrome 42中可用。

您的代码可以在Chrome 42中工作,但需要进行以下两项修改:

1)浏览器将忽略它不理解的任何脚本类型。 Chrome似乎没有在<script type="application/ecmascript;version=6"></script>内运行任何代码。 您应该删除类型。

2)块作用域声明( letconst class )仅在严格模式下可用。 您需要明确选择加入: 'use strict';

 <!DOCTYPE html> <html> <head> <script> 'use strict'; class Car { constructor(make) { this.make = make; this.currentSpeed = 20; } printCurrentSpeed(){ console.log(this.make + 'is going ' + this.currentSpeed + 'kmh.'); } } var stang = new Car('Mustang'); stang.printCurrentSpeed(); </script> <title> </title> </head> <body> </body> </html> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM