0

我(在这个网站上)找到了一个很酷的小原型扩展功能,用于清理数字,现在想在一个库中使用它,然后我可以根据需要导入它。我看到了如何导入定义的函数而不是原型扩展。

文件: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”函数?

4

1 回答 1

1

不知道为什么 someNum.round() 会抛出错误,即使回合已经在导入的文件中 Number 的原型中定义。(someLib.js 中的 Number.prototype.round)

现在,由于您返回了未在 someLib.js 中任何地方定义的回合,您实际上可以传递 Number.prototype.round 的引用,如下所示。

export default { round: Number.prototype.round, foo }

然后要么直接使用它

SomeLib.round.call(someNum, 2)

或者你可以在这个文件中设置 Number 的原型。

虽然不确定,但为什么已经定义的 Number 原型不起作用。

于 2020-10-12T20:40:34.863 回答