Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Typescript奇数扩展数_Javascript_Typescript_Prototype_Ecmascript 5 - Fatal编程技术网

Javascript 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

我扩展了Number对象,因此将有一个函数toKM(),它将距离(以米为单位)转换为公里

当我使用以下语法(IMO是Typescript的默认语法)时,函数不起作用

接口号{
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