如何在JavaScript / jQuery中获取对象的属性?

在JavaScript / jQuery中,如果我alert某个对象,我会得到[object][object Object]

有什么方法可以知道:

  • 这两个对象有什么区别

  • 这是什么类型的对象

  • 此对象包含的所有属性以及每个属性的值


  • 您可以通过for in循环中调用JavaScript本地代码来查找对象键+值:

    var obj = {
        foo:    'bar',
        base:   'ball'
    };
    
    for(var key in obj) {
        alert('key: ' + key + 'n' + 'value: ' + obj[key]);
    }
    

    或者使用jQuerys .each()方法:

    $.each(obj, function(key, element) {
        alert('key: ' + key + 'n' + 'value: ' + element);
    });
    

    除了六种基本类型之外,ECMA- / Javascript中的所有内容都是一个对象。 数组,函数,一切都是一个对象。 这些基元中的大多数实际上也是分别具有有限方法选择的对象,当需要时,它们被转化为对象。 要知道base classname您可以在对象上调用Object.prototype.toString方法,如

    alert(Object.prototype.toString.call([]));
    

    会输出[object Array]

    还有其他几个类名,比如[object Object][object Function][object Date][object String][object Number][object Array][object Regex]


    要获取对象属性/值的列表:

  • 在Firefox中 - Firebug:

    console.dir(<object>);
    
  • 标准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");
       }
    

  • 编辑:

  • <object>将被替换为对该对象的变量引用。
  • console.log()将在控制台中使用,如果您不确定它是什么,可以用alert()替换它。

  • 我)这两个对象有什么区别

    简单的答案是[object]指示没有内部类的主机对象。 主机对象是不属于您正在使用的ECMAScript实现的一部分的对象,但由主机作为扩展提供。 DOM是宿主对象的常见示例,尽管在大多数较新的实现中,DOM对象从本地对象继承并具有内部类名称(如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);
    

    很多isArray实现使用这种技术来发现一个对象是否实际上是一个数组(尽管它在IE中不像其他浏览器那样健壮)。


    iii)该对象包含的所有属性以及每个属性的值

    在ECMAScript 3中,您可以使用for...in循环遍历可枚举的属性。 请注意,大多数内置属性都是不可枚举的。 某些主机对象也是如此。 在ECMAScript 5中,可以使用Object.getOwnPropertyNames(obj)获取包含所有非继承属性名称的数组。 该数组将包含不可枚举和可枚举的属性名称。

    链接地址: http://www.djcxy.com/p/27367.html

    上一篇: How to get an object's properties in JavaScript / jQuery?

    下一篇: How to escape a JSON string to have it in a URL?