此刻了解闭包,并注意到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;
}());
我意识到闭包有多种用途,封装就是其中之一,因此,当您试图实现的是类时,为什么不使用类呢?
谢谢。
答案 0 :(得分:4)
因为function
与Internet Explorer和其他过时的浏览器兼容,但是class
关键字不兼容。 class
仅可在支持ES6的环境中使用。因此,出于兼容性考虑,“类”被转换为立即调用的函数。