Javascript 非函数的全局变量列表
我想得到所有全局变量的列表。在另一个答案中,我发现:Javascript 非函数的全局变量列表,javascript,Javascript,我想得到所有全局变量的列表。在另一个答案中,我发现: Object.keys( window ); 问题是它还列出了全局定义的函数名。有没有办法只得到那些不是函数的 我试过这个: function Test() { var f = Object.keys(window); for (var i = 0; i < f.length; i++) { if (typeof (f[i]) !== 'function') { cons
Object.keys( window );
问题是它还列出了全局定义的函数名。有没有办法只得到那些不是函数的
我试过这个:
function Test() {
var f = Object.keys(window);
for (var i = 0; i < f.length; i++) {
if (typeof (f[i]) !== 'function') {
console.log(f[i]);
}
}
}
功能测试(){
var f=Object.keys(窗口);
对于(变量i=0;i
但它仍在显示功能。
谢谢 您可以在on窗口中为..执行一个
,并检查每个项目以确保它不是一个函数:
var globalVars = [];
for (var name in window) {
if (window.hasOwnProperty(name) && typeof window[name] != "function") {
globalVars.push(name);
}
}
您可以在窗口上的
中为..执行一个,并检查每个项目以确保它不是一个函数:
var globalVars = [];
for (var name in window) {
if (window.hasOwnProperty(name) && typeof window[name] != "function") {
globalVars.push(name);
}
}
在代码中,f[i]是键,而不是分配给键的值。所以
您正在检查键的typeof不是“函数”,它不是,它始终是“字符串”
您的测试需要:
if (typeof(window[f[i]]) !== 'function')
在代码中,f[i]是键,而不是指定给键的值。所以
您正在检查键的typeof不是“函数”,它不是,它始终是“字符串”
您的测试需要:
if (typeof(window[f[i]]) !== 'function')
您的方法是正确的,但这一行是错误的:
由于f
是一个属性名称数组,因此项f[i]
将始终是一个字符串。要检查相应的窗口
属性是否为函数,请使用
if (typeof window[f[i]] !== 'function') {
您的方法是正确的,但这一行是错误的:
由于f
是一个属性名称数组,因此项f[i]
将始终是一个字符串。要检查相应的窗口
属性是否为函数,请使用
if (typeof window[f[i]] !== 'function') {
以下是一份综合清单:
var globals=Object.getOwnPropertyNames(__proto__)
.concat(Object.getOwnPropertyNames(window)).filter(function(a){
return !String(this[a]).match(/^function/) && typeof this[a] !== "function";
}).sort().filter(function(a,b,c){return c.lastIndexOf(a)===b; });
alert(globals);
编辑:已将唯一筛选器添加到结果集。。。
编辑:删除重复采集这里有一个全面的列表:
var globals=Object.getOwnPropertyNames(__proto__)
.concat(Object.getOwnPropertyNames(window)).filter(function(a){
return !String(this[a]).match(/^function/) && typeof this[a] !== "function";
}).sort().filter(function(a,b,c){return c.lastIndexOf(a)===b; });
alert(globals);
编辑:已将唯一筛选器添加到结果集。。。
编辑:删除重复采集是否将其过滤掉?如果你是这个意思的话,没有一个函数可以获取不可调用属性的所有属性名。然后过滤掉它们?如果你是这个意思的话,没有一个函数可以获取不可调用属性的所有属性名。你对Object.keys(window)
有什么期待?它既不是window的属性,也不是它的原型的属性?我以为我在添加.keys()时得到了不同的计数,我想知道为什么,但我一定是看错了什么,很好,谢谢!你对Object.keys(window)
有什么期望?它既不是window的属性,也不是它的原型的属性?我想我在添加.keys()时得到了不同的计数,我想知道为什么,但我一定是看错了什么,很好,谢谢@thg435感谢您的修复!这个例程在这个页面上找到81个对象,我的找到88个,以防你需要额外的7个…这7个是(“无穷大”、“JSON”、“数学”、“NaN”、“事件”、“全局变量”和“未定义”)。。。哎哟,那就做6;)window
在某些版本的IE中没有hasOwnProperty
方法。您可以在代码中使用Object.prototype.hasOwnProperty.call(window,name)
来克服此问题this@thg435谢谢你的修复!这个例程在这个页面上找到81个对象,我的找到88个,以防你需要额外的7个…这7个是(“无穷大”、“JSON”、“数学”、“NaN”、“事件”、“全局变量”和“未定义”)。。。哎哟,那就做6;)window
在某些版本的IE中没有hasOwnProperty
方法。您可以在代码中使用Object.prototype.hasOwnProperty.call(window,name)
来克服此问题