如何从全局对象中自动生成变量
How can I automate making variables from an object global?
我想制作一个函数,自动将每个"数学"函数转换为全局
示例:
floor = Math.floor
这允许我这样做:
alert(floor(2.5))
上面的例子运行得很好(它提醒"2"),但我似乎找不到一种方法来为"Math"对象中的每个函数自动化这个过程。我上网想自己做点什么,但是。。。什么都不管用。
答案:
(function(a,b){for(b in a=Object.getOwnPropertyNames(Math))this[a[b]]=Math[a[b]]})()
实际上,您可能认为可以循环Math
对象的所有属性,并将任何函数转换为全局函数(通过复制其引用):
for( var prop in Math ) {
if( typeof Math[ prop ] === 'function' ) {
window[ prop ] = Math[ prop ];
}
}
这会奏效的如果单词将不在此处:)
我们可以发现Object.getOwnPropertyDescriptor
:的问题
console.log( Object.getOwnPropertyDescriptor(Math, 'floor') );
并且正如我们所看到的,所有的methods
都被设置为enmuerable
false
。
编辑
实际上我忘了Object.getOwnPropertyNames
。您确实可以使用该方法获得所有属性名称,如
Object.getOwnPropertyNames(Math).forEach(function(name) {
if( typeof Math[name] === 'function' )
window[name] = Math[name];
});
类似
Object.getOwnPropertyNames(Math).forEach(function (p) {
window[p] = Math[p];
});
alert(floor(4.5));
alert(sqrt(100));
getOwnPropertyNames
给出对象中的所有属性,而不仅仅是可枚举的属性。
这在浏览器中起作用,其中全局对象称为window
。对于其他JS环境,您可能需要一些不同的东西。
小提琴
相关文章:
- 自动生成的用户名
- 从现有html自动生成html源文档
- 使用Google Feeds API使用“tap”在jquery mobile中自动生成feed列表
- Div 自动生成时自动关闭
- 如何选择由 DevExpress constrols 使用 Javascript DOM 技术自动生成的 html “i
- 数据表自动生成的序列号无法正常工作.对于每一页
- 数组中自动生成的一组值
- 我可以自动生成一个jquery块,对不同的元素做同样的事情吗
- 弹出窗口自动生成无边界
- 在文本框中自动生成值
- SignalR Jquery自动生成Div
- 如何自动生成目录
- 从JSON模式自动生成JavaScript
- 如何在FineUploader上传到s3时获得客户端自动生成的uuid
- 如何获取插入到表中的行的自动生成的ID
- Firebase-如何找到所有具有自动生成ID的匹配项,其中值为false
- 使用javascript从字符串中自动生成标记
- 在HTML表单中使用自动生成(即随机)的ID
- 如何从全局对象中自动生成变量
- 如何通过单击自动生成列表的链接来设置变量