为什么编译的Angular代码使用闭包而不是类?

时间:2019-07-18 10:15:57

标签: javascript angular

此刻了解闭包,并注意到Angular组件Typescript类已编译为闭包函数。在Javascript类上使用闭包是否有任何特殊原因?例如全新项目中编译的AppComponent.ts。

var AppComponent = /** @class */ (function () {
   function AppComponent() {
       this.title = 'My App';
   }
   AppComponent.prototype.ngOnInit = function () {
   };
   AppComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
    Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
        selector: 'app-root',
        template: __webpack_require__(/*! ./app.component.html */ "./src/app/app.component.html"),
        styles: [__webpack_require__(/*! ./app.component.scss */ "./src/app/app.component.scss")]
    }),
    tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])
    ], AppComponent);
    return AppComponent;
}());

我意识到闭包有多种用途,封装就是其中之一,因此,当您试图实现的是类时,为什么不使用类呢?

谢谢。

1 个答案:

答案 0 :(得分:4)

因为function与Internet Explorer和其他过时的浏览器兼容,但是class关键字不兼容。 class仅可在支持ES6的环境中使用。因此,出于兼容性考虑,“类”被转换为立即调用的函数。