如何获取javascript对象的数值或字符串值,例如窗口而不是字符串[object]
寻找类似对象id的东西,如44001或0xFF0012,该对象是唯一的
答案 0 :(得分:3)
Javascript不会为每个对象保留类似python的唯一哈希值。您可以创建一个函数来为对象分配唯一的字符串,或者检索已经分配的字符串。
var getUniqueId = (function(){
// uncomment this block if you want to avoid memory leaks
// in browsers with crappy garbage collectors.
/*
try {
window.addEventListener('unload', cleanup);
window.addEventListener('beforeunload', cleanup);
} catch (_) { try {
window.attachEvent('onunload', cleanup);
window.attachEvent('onbeforeunload', cleanup);
} catch (__){}}
function cleanup () { guid.knownObjects.length=0; }
*/
guid.knownObjects=[];
return guid;
function guid (obj) {
for (var i=guid.knownObjects.length; i--;) {
if (guid.knownObjects[i][0]===obj) return guid.knownObjects[i][1];
}
var uid='x'+(+(''+Math.random()).substring(2)).toString(32);
guid.knownObjects.push([obj, uid]);
return uid;
}
}());
测试出来:
getUniqueId(window)
> "x7onn8ne58ug"
getUniqueId(document)
> "x9jeriqjdf9o"
getUniqueId(document)
> "x9jeriqjdf9o"
getUniqueId(window)
> "x7onn8ne58ug"
您可以执行console.dir(getUniqueId.knownObjects)以获取一些有用的调试信息。
getUniqueId.knownObjects
> [
Array
0: DOMWindow
1: "x7onn8ne58ug"
,
Array
0: HTMLDocument
1: "x9jeriqjdf9o"
]
答案 1 :(得分:0)
答案 2 :(得分:-1)
您希望看到window
的字符串表示形式?
为JS运行时提供toString
实现的对象负责自己的值。因此,HTMLElement
等某些对象可以返回其innerHTML
的{{1}}。但它没有,所以默认是类型名称。
答案 3 :(得分:-1)
您可以编写这样的基本调试,将对象传递为o:
function debug(o){
var r = '';
for (var k in o){
r += k + ' => ' + o[k] + '\n';
}
window.alert(r);
}
或者您可以搜索与此类似的转储或print_r:http://geekswithblogs.net/svanvliet/archive/2006/03/23/simple-javascript-object-dump-function.aspx