为什么编译的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;
}());

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

谢谢。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在此代码中,为什么要使用闭包?

为什么要在代码中考虑使用JavaScript闭包?

为什么要使用IFFE闭包而不是常规闭包?

闭包-为什么这行代码是这样的?

为什么闭包编译器创建void 0而不是更短的选择?

为什么在闭包参数中使用“ &&”?

为什么闭包编译器使用goog.exportSymbol重命名属性?

为什么闭包编译器更改了“ this”?

为什么要使用闭包进行分配,而不是直接为键分配值?

为什么boost示例再次调用`shared_from_this()`而不是使用闭包变量

为什么此代码的行为类似于闭包?

为什么“ for .. in”允许闭包?

Google闭包为什么不编译将重复使用的索引保留在变量中?

为什么此代码使用eclipse编译器而不是javac(Maven)进行编译

为什么jenkinsfile以这种方式使用闭包?

为什么在使用HashMap的or_insert时调用闭包?

在将闭包传递给 gradle 扩展时,为什么闭包的所有者不是主要的 Projects 对象?

为什么编译器对闭包和局部函数的处理方式不同?

为什么编译器不能通过内联优化闭包变量?

为什么以下代码使用`c ++ 03`而不是`c ++ 11`进行编译

为什么以下代码使用clang而不是gcc进行编译

为什么Groovy闭包声明最大而不是恒定数量的参数

为什么这会编译对类而不是实例的引用?

如何使用闭包编译器在javascript中注释扩展通用类型的类

为什么闭包变量不被遗忘?

为什么参数通过闭包失效?

为什么在没有内联相同代码的情况下,闭包会引入借位?

为什么此代码会根据在哪个范围内创建闭包而工作/失败?

当闭包(似乎)永远无法访问时,为什么要在闭包的类型注释中使用“内部参数标签”?