Javascript Typescript奇数扩展数
我扩展了Number对象,因此将有一个函数toKM(),它将距离(以米为单位)转换为公里 当我使用以下语法(IMO是Typescript的默认语法)时,函数不起作用Javascript Typescript奇数扩展数,javascript,typescript,prototype,ecmascript-5,Javascript,Typescript,Prototype,Ecmascript 5,我扩展了Number对象,因此将有一个函数toKM(),它将距离(以米为单位)转换为公里 当我使用以下语法(IMO是Typescript的默认语法)时,函数不起作用 接口号{ toKM():编号 } Number.prototype.toKM=()=>{ 退这个/1000 } 设alfa=3456 document.write(alfa.toKM())如果您使用箭头函数,Typescript将从声明上下文中捕获这一点,如果您的目标是es6: var _this = this; Number.p
接口号{
toKM():编号
}
Number.prototype.toKM=()=>{
退这个/1000
}
设alfa=3456
document.write(alfa.toKM())
如果您使用箭头函数,Typescript将从声明上下文中捕获这一点,如果您的目标是es6:
var _this = this;
Number.prototype.toKM = function () {
return _this / 1000;
};
如果使用纯JS(es2015或更高版本),则箭头函数在事件中不起作用,因为它们的行为与上面的JS相同
您需要使用常规函数并指定此
Number.prototype.toKM = function(this: number) {
return this / 1000
}
这不仅仅是一个类型脚本,如果你将它编译到es6并使用真正的箭头函数,你会得到同样的结果。@NitzanTomer你是对的,我当时处于TS模式,没有考虑JS,补充道clarification@NitzanTomerTSC正在编译带有“目标”的代码:“es6”.∑τρατήυριστοΔολον如果您以es6为目标,则行为是相同的,这是从声明上下文中捕获的(该行为等同于上述es5版本)。∑τραττήςρλρδττδολλο回答是正确的,在这种情况下,您只能使用
函数(),由于箭头功能将保存此
的上下文。如果您将其编译到es5
或es6