是否可以在不加对象名称前缀的情况下调用对象的函数

Is it possible to call the functions of an object, without prefixing the object name?

本文关键字:对象 前缀 情况下 调用 函数 是否      更新时间:2024-01-22

我正在编写用于执行数学计算的javascript代码。对于许多函数,我需要键入类似Math.log()Math.PIMath.sqrt() 的内容

有没有办法定义"名称空间"之类的东西,这样我只需说log()PIsqrt()就可以直接访问数学中定义的所有函数?

只需删除(),就可以将函数分配给一个变量,然后再调用该变量。

var log = Math.log;
// ...
console.log("log of 5 = " + log(5));

实现这一点的方法是with

with (Math){
   console.log(sin(4));
}

with(Math)块中,您可以使用在Math上定义的函数,如Math.logMath.sin等。

你可以在MDN 上找到更多关于它的信息

正如评论所指出的,这并不总是被认为是安全的,因为可能会发生名称冲突。这些潜在的陷阱与另一种语言中的using namespace等语句相同,只是并非所有对象都设计为名称空间。因此,使用风险自负,或者按照另一个答案的建议,将特定函数分配给变量。