Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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 如何将所有对象属性置于最前沿? 开始:_Javascript_Math - Fatal编程技术网

Javascript 如何将所有对象属性置于最前沿? 开始:

Javascript 如何将所有对象属性置于最前沿? 开始:,javascript,math,Javascript,Math,JavaScript中的Math对象可以证明非常有用。在重复使用Math对象的页面中,我不希望继续使用。我更愿意在顶层使用这些函数。我将举一个例子说明这是如何实现的: 带有关键字(坏方法)的选项: 让我声明如下:这是绝对可怕的,永远不要使用它 与(数学){ 设q=min(10211); 设r=max(2,8); 设e=random(); 设p=楼层(e*r) 控制台日志(q*r/e) } 通过这样定义将对象置于前面(好方法): 我更喜欢用这种方式,而不是上面的方式 设{min,max,rand

JavaScript中的
Math
对象可以证明非常有用。在重复使用
Math
对象的页面中,我不希望继续使用。我更愿意在顶层使用这些函数。我将举一个例子说明这是如何实现的:

带有关键字(坏方法)的选项: 让我声明如下:这是绝对可怕的,永远不要使用它

与(数学){
设q=min(10211);
设r=max(2,8);
设e=random();
设p=楼层(e*r)
控制台日志(q*r/e)
}
通过这样定义将对象置于前面(好方法): 我更喜欢用这种方式,而不是上面的方式

设{min,max,random,floor}=Math;
设q=min(10211);
设r=max(2,8);
设e=random();
设p=地板(e*r);
控制台日志(q*r/e);
续: 我在问是否有人知道用
with
关键字而不用
with
完成什么的方法,因为我觉得
with
很糟糕。我很想知道是否有可能获得
Math
的所有单词,并将其存储到定义为
Math
对象中。我理解这可能令人困惑。感谢阅读。

对于普通对象(对象
类的实例),您可以使用
对象。分配
将其属性添加到
窗口
对象。但是对于
Math
和其他属性,它们的属性似乎不可枚举。相反,您可以使用
Object.getOwnPropertyNames
查找数学的所有属性并将它们附加到窗口对象

for (let prop of Object.getOwnPropertyNames(Math)) {
    window[prop] = Math[prop];
}

console.log(PI); // 3.14...

我认为这不是一个很好的做法,因为它对于将哪些名称添加到全局名称空间不是很透明。

我不确定您在问什么。你已经有了一个很好的解决方案,不是真的,不是没有
eval
或类似的东西。明确地预先声明所有变量,事情就会变得更好,更易于维护。让{min,max,random,floor,…other}=Math,不知道你实际上在做什么want@evolutionxbox,目标是“全球化”所有
Math
对象,因此可以从
窗口
访问它们。我更困惑的是
数学
已经在全局范围内了。使用
数学。
?很好的发现。您还可以检查是否已经存在冲突的全局名称,而不是覆盖它。