Sai*_*ful 93 javascript jquery
在JavaScript/jQuery中,如果我alert有一些对象,我会得到[object]或者 [object Object]
有什么办法可以知道:
这两个对象有什么区别
这是什么类型的对象
此对象包含的所有属性以及每个属性的值
?
jAn*_*ndy 139
您可以通过调用JavaScript的本机for in循环来查找对象的键和值:
var obj = {
foo: 'bar',
base: 'ball'
};
for(var key in obj) {
alert('key: ' + key + '\n' + 'value: ' + obj[key]);
}
Run Code Online (Sandbox Code Playgroud)
或者使用jQuery的.each()方法:
$.each(obj, function(key, element) {
alert('key: ' + key + '\n' + 'value: ' + element);
});
Run Code Online (Sandbox Code Playgroud)
除六种原始类型外,ECMA-/JavaScript中的所有内容都是一个对象.阵列; 功能; 一切都是对象.即使大多数这些原语实际上也是具有有限选择方法的对象.必要时,它们被铸在引擎盖下的物体中.要知道基类名称,可以Object.prototype.toString在对象上调用方法,如下所示:
alert(Object.prototype.toString.call([]));
Run Code Online (Sandbox Code Playgroud)
以上将输出[object Array].
还有其他一些类的名称,如[object Object],[object Function],[object Date],[object String],[object Number],[object Array],和[object Regex].
vol*_*ron 13
在Firefox中 - Firebug:
console.dir(<object>);
Run Code Online (Sandbox Code Playgroud)标准JS获取从Slashnick借来的对象密钥:
var fGetKeys = function(obj){
var keys = [];
for(var key in obj){
keys.push(key);
}
return keys;
}
// Example to call it:
var arrKeys = fGetKeys(document);
for (var i=0, n=arrKeys.length; i<n; i++){
console.log(i+1 + " - " + arrKeys[i] + document[arrKeys[i]] + "\n");
}
Run Code Online (Sandbox Code Playgroud)<object> 在上面将被替换为对象的变量引用.console.log() 将在控制台中使用,如果你不确定是什么,你可以用一个替换它 alert()i)这两个对象之间有什么区别
简单的答案是[object]指示没有内部类的宿主对象.宿主对象是一个对象,它不是您正在使用的ECMAScript实现的一部分,但是由主机作为扩展提供.DOM是宿主对象的常见示例,但在大多数较新的实现中,DOM对象继承自原始Object并具有内部类名(例如HTMLElement,Window等).IE的专有ActiveXObject是主机对象的另一个例子.
[object] 在Internet Explorer 7及更低版本中警告DOM对象时最常见,因为它们是没有内部类名的主机对象.
ii)这是什么类型的对象
您可以使用获取对象的"类型"(内部类)Object.prototype.toString.规范要求它始终返回格式的字符串[object [[Class]]],其中[[Class]]是内部类名,如Object,Array,Date,RegExp等.您可以将此方法应用于任何对象(包括宿主对象),使用
Object.prototype.toString.apply(obj);
Run Code Online (Sandbox Code Playgroud)
许多isArray实现使用此技术来发现对象是否实际上是一个数组(尽管它在IE中并不像在其他浏览器中那样健壮).
iii)该对象包含的所有属性以及每个属性的值
在ECMAScript 3中,您可以使用for...in循环遍历可枚举属性.请注意,大多数内置属性都是不可枚举的.某些主机对象也是如此.在ECMAScript 5中,您可以使用包含所有非继承属性的名称的数组Object.getOwnPropertyNames(obj).此数组将包含不可枚举和可枚举的属性名称.