Ionic2中导出的SettingsPage类为何可赋值给变量?
为什么类名SettingsPage能赋值给变量?
嘿,这个问题问得挺到位的!其实在TypeScript(包括ES6之后的JavaScript)里,类的本质就是一个特殊的函数——构造函数的语法糖,所以类名本身就是指向这个构造函数的引用,自然能直接赋值给变量啦。
你看你在settings.ts里定义的这段代码:
@Component({ selector: 'page-settings', templateUrl: 'settings.html' }) export class SettingsPage { }
编译之后,SettingsPage会被转换成一个构造函数,类名就是这个构造函数的引用标识。当你在app.component.ts里写settingsPage = SettingsPage;的时候,本质上就是把这个构造函数的引用,赋值给了settingsPage变量——这和你把普通函数赋值给变量是完全一样的逻辑,比如:
function MyNormalFunc() {} const myVariable = MyNormalFunc;
不仅如此,赋值之后你还可以通过这个变量来创建类的实例,效果和直接用原类名创建完全一致:
const settingsInstance = new this.settingsPage();
内容的提问来源于stack exchange,提问作者pies
相关产品推荐
相关产品推荐

