问题描述
我(在此站点上)发现了一个很酷的小原型扩展函数,用于清理数字,现在想在一个库中使用它,然后可以根据需要导入该库。我看到了如何导入已定义的函数,而不是原型扩展。
文件:SomeLib.js
"use strict";
Number.prototype.round = function(places) {
return +(Math.round(this + "e+" + places) + "e-" + places);
}
function foo() {
console.log("doing SomeLib.foo()");
}
export default { round,foo }
文件:SomeImporter.js
"use strict";
import somelib from "./SomeLib.js";
somelib.foo(); // outputs 'doing SomeLib.foo()'
var someNum = 1.2345;
console.log(someNum.round(2)); // outputs 'Uncaught ReferenceError: round is not defined'
如何在另一个文件中导入'Number.prototype.round'函数?
解决方法
不确定即使导入的文件中Number的原型中已经定义了该回合,为什么someNum.round()也会引发错误。 (someLib.js中的Number.prototype.round)
现在,由于您返回的回合在someLib.js中的任何地方都未定义 您实际上可以按如下方式传递Number.prototype.round的引用。
export default { round: Number.prototype.round,foo }
然后直接将其用作
SomeLib.round.call(someNum,2)
或者您可以在此文件中设置Number的原型。
尽管不确定,为什么已经定义的Number原型不起作用。