atc*_*way 2 javascript iife typescript
如果我创建一个简单的TypeScript module命名test,它将类似于以下内容:
module test
{
export class MyTest {
name = "hello";
}
}
Run Code Online (Sandbox Code Playgroud)
结果将JavaScript创建一个IIFE类似于以下内容的:
var test;
(function (test) {
var MyTest = (function () {
function MyTest() {
this.name = "hello";
}
return MyTest;
})();
test.MyTest = MyTest;
})(test || (test = {}));
Run Code Online (Sandbox Code Playgroud)
我不明白是什么是底了以下行的目的IIFE,它包含的参数为function:
(test || (test = {}));
Run Code Online (Sandbox Code Playgroud)
结果函数还接受参数test:
(function (test) {
Run Code Online (Sandbox Code Playgroud)
我理解使用参数传递jQuery诸如' object like之类})(jquery);的结果时,结果函数可以采用like这样的别名(function ($) {。但是,我只是没有看到(test || (test = {}));争论的目的。
我知道这test.MyTest = MyTest;是公开的公共方法MyTest,但是(test || (test = {}));这些参数为什么起作用以及如何起作用?
它允许您使模块开放式。例如
(function (test) {
var MyTest = (function () {
function MyTest() {
this.name = "hello";
}
return MyTest;
})();
test.MyTest = MyTest;
})(test || (test = {}));
(function (test) {
var SecondTest = (function () {
function SecondTest() {
this.name = "hello";
}
return SecondTest;
})();
test.SecondTest= SecondTest;
})(test || (test = {}));
Run Code Online (Sandbox Code Playgroud)
第一次test将被undefined分配{}。下次已经定义好了,这就是我们要扩展的内容SecondTest
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |