目前了解闭包,并注意到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;
}());


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

谢谢。

最佳答案

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

关于javascript - 为什么编译的Angular代码使用闭包而不是类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57092212/

10-11 21:37