【发布时间】:2018-05-06 03:07:13
【问题描述】:
我在 TypeScript 中有一个模块如下:
import app = require("durandal/app");
import ko = require("knockout");
class Screen1 {
method1(arg: string): string {
return "Hello";
}
method2 = (arg: string): string => {
return "Hello";
};
}
export = Screen1;
这会生成以下 JavaScript:
define(["require", "exports"], function (require, exports) {
"use strict";
var Screen1 = (function () {
function Screen1() {
this.method2 = function (arg) {
return "Hello";
};
}
Screen1.prototype.method1 = function (arg) {
return "Hello";
};
return Screen1;
}());
return Screen1;
});
我可以看到每种方法的不同输出,但运行时的实际实际差异是什么?我怀疑如果在这些方法中使用 this 会影响什么,但我不确定最好的调查方法。
(对我来说,TypeScript 最令人沮丧的事情之一是有多少种方法可以做看似完全相同的事情,却有着难以理解的细微差别——例如定义一个类。我知道 4 种方法。非常混乱)
【问题讨论】:
-
1 个主要区别是,原型中的函数不会复制到每个对象中。因此,如果您创建 10 个对象,则每个对象中都会有 10 个方法 1 副本,但方法 2 有 1 个副本
-
method2不是方法,而是箭头函数
标签: javascript typescript