为什么TypeScript加上了";原型;?
我的打字脚本代码:为什么TypeScript加上了";原型;?,typescript,Typescript,我的打字脚本代码: export class File { isOpenEnabled() { return false; } openClicked() { debugger; } } define([], function () { return { handler: new File() }; }); 变成: define(["require", "exports"], function(
export class File {
isOpenEnabled() {
return false;
}
openClicked() {
debugger;
}
}
define([], function () {
return {
handler: new File()
};
});
变成:
define(["require", "exports"], function(require, exports) {
var File = (function () {
function File() {
}
File.prototype.isOpenEnabled = function () {
return false;
};
File.prototype.openClicked = function () {
debugger;
};
return File;
})();
exports.File = File;
define([], function () {
return {
handler: new File()
};
});
});
为什么要插入原型
谢谢-javascript中的dave函数是对象 例如:
function MyClass () {
this.MyMethod= function () {};
}
每次创建MyClass
的新实例时,也会创建MyMethod
的新实例。
更好的方法是将函数MyMethod
添加到MyClass
的原型中:
MyClass.prototype.MyMethod = function(){};
这样,无论您创建了多少个MyClass
实例,都只会创建一个MyMethod
回到你的问题,我认为typescript正是在对你在文件类中定义的方法进行这种优化。有两个原因:
- 内存优化(Alberto已经提到)
- 原型遗传
第二个原因和第一个原因在下面的章节中都有详细介绍:所以它只创建一次MyClass.prototype,然后分配给MyClass对象的所有实例?谢谢-戴夫