是否可以调用对象的函数,而无需为对象名称添加前缀?

时间:2015-02-19 03:04:39

标签: javascript

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

的内容

有没有办法定义“命名空间”或其他东西,所以我可以直接访问数学中定义的所有函数,只需说log()PIsqrt()

2 个答案:

答案 0 :(得分:5)

只需删除(),就可以将函数赋值给变量,然后再调用变量。

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

答案 1 :(得分:2)

执行此操作的方法是with

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

with(Math)块内,您可以使用数学上定义的函数,例如Math.log Math.sin等。

您可以找到有关它的更多信息on MDN

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