programing

자바스크립트/jQuery에서 객체의 속성을 가져오는 방법은?

yellowcard 2023. 8. 28. 20:56
반응형

자바스크립트/jQuery에서 객체의 속성을 가져오는 방법은?

JavaScript / jQuery(JavaScript / jQuery)에서는alert어떤 물체, 나도 이해합니다.[object]또는[object Object]

알 수 있는 방법이 있습니까?

  1. 이 두 물체 사이의 차이점은 무엇입니까?

  2. 이 개체의 유형은 무엇입니까?

  3. 이 개체에 포함된 모든 속성과 각 속성의 값

?

자바스크립트의 네이티브를 호출하여 객체의 키와 값을 조회할 수 있습니다.for in루프:

var obj = {
    foo:    'bar',
    base:   'ball'
};

for(var key in obj) {
    alert('key: ' + key + '\n' + 'value: ' + obj[key]);
}

또는 jQuery의.each()방법:

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

6개의 기본 유형을 제외하고 ECMA-/JavaScript의 모든 것은 개체입니다.배열; 기능; 모든 것은 객체입니다.이러한 원시 요소들의 대부분도 실제로는 방법의 선택이 제한된 개체입니다.필요한 경우 후드 아래의 물체에 주조됩니다.기본 클래스 이름을 알기 위해 다음을 호출할 수 있습니다.Object.prototype.toString다음과 같은 개체에 대한 메서드:

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

위의 명령은 출력됩니다.[object Array].

다른 몇 개의 클래스 이름이 있습니다. 예를 들어,[object Object],[object Function],[object Date],[object String],[object Number],[object Array],그리고.[object Regex].

개체 속성/값 목록을 가져오는 방법

  1. Firefox에서 - Firebug:

    console.dir(<object>);
    
  2. 슬래시닉에서 객체 키를 빌리는 표준 JS:

       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");
       }
    

편집:

  1. <object>위의 항목은 객체에 대한 변수 참조로 대체됩니다.
  2. console.log()콘솔에서 사용됩니다. 그게 무엇인지 확실하지 않으면 콘솔을 교체할 수 있습니다.alert()

이 두 물체 사이의 차이점은 무엇입니까?

간단한 대답은[object]내부 클래스가 없는 호스트 개체를 나타냅니다.호스트 개체는 작업 중인 ECMA 스크립트 구현의 일부가 아니지만 호스트에서 확장으로 제공하는 개체입니다.DOM은 호스트 개체의 일반적인 예이지만 대부분의 최신 구현에서는 DOM 개체가 네이티브 개체에서 상속되고 내부 클래스 이름(: HTMLElement, Window 등)을 가집니다.IE의 독점적인 ActiveXObject는 호스트 개체의 또 다른 예입니다.

[object]내부 클래스 이름이 없는 호스트 개체이기 때문에 Internet Explorer 7 이하에서 DOM 개체를 경고할 때 가장 일반적으로 나타납니다.

ii) 이것은 어떤 유형의 객체입니까?

다음을 사용하여 개체의 "유형"(내부 클래스)을 얻을 수 있습니다.Object.prototype.toString규격에서 항상 형식의 문자열을 반환해야 합니다.[object [[Class]]],어디에[[Class]]개체, 배열, 날짜, RegExp 의 내부 클래스 이름입니다.다음을 사용하여 이 메서드를 모든 개체(호스트 개체 포함)에 적용할 수 있습니다.

Object.prototype.toString.apply(obj);

이많isArray구현에서는 이 기술을 사용하여 개체가 실제로 배열인지 여부를 검색합니다(IE에서는 다른 브라우저만큼 강력하지는 않지만).


iii) 이 개체에 포함된 모든 속성과 각 속성의 값

에서는 ECMA 3을 하여 초과 할 수 .for...in루프. 대부분의 기본 제공 속성은 열거할 수 없습니다.일부 호스트 개체도 마찬가지입니다.에서는 ECMA를 사용하여 상속되지 않은 수 .Object.getOwnPropertyNames(obj)이 배열에는 열거할 수 없고 열거할 수 없는 속성 이름이 포함됩니다.

저는 이것이 스팸으로 간주되지 않기를 바랍니다.는 끝없는 디버그 세션 끝에 겸손하게 기능을 작성하게 되었습니다: http://github.com/halilim/Javascript-Simple-Object-Inspect

function simpleObjInspect(oObj, key, tabLvl)
{
    key = key || "";
    tabLvl = tabLvl || 1;
    var tabs = "";
    for(var i = 1; i < tabLvl; i++){
        tabs += "\t";
    }
    var keyTypeStr = " (" + typeof key + ")";
    if (tabLvl == 1) {
        keyTypeStr = "(self)";
    }
    var s = tabs + key + keyTypeStr + " : ";
    if (typeof oObj == "object" && oObj !== null) {
        s += typeof oObj + "\n";
        for (var k in oObj) {
            if (oObj.hasOwnProperty(k)) {
                s += simpleObjInspect(oObj[k], k, tabLvl + 1);
            }
        }
    } else {
        s += "" + oObj + " (" + typeof oObj + ") \n";
    }
    return s;
}

사용.

alert(simpleObjInspect(anyObject));

또는

console.log(simpleObjInspect(anyObject));

Mozilla Firefox용 FireBug를 가져옵니다.

사용하다console.log(obj);

Spotlight.js는 창 개체와 특정 항목을 찾는 다른 호스트 개체를 반복하는 데 유용한 라이브러리입니다.

// find all "length" properties
spotlight.byName('length');

// or find all "map" properties on jQuery
spotlight.byName('map', { 'object': jQuery, 'path': '$' });

// or all properties with `RegExp` values
spotlight.byKind('RegExp');

// or all properties containing "oo" in their name
spotlight.custom(function(value, key) { return key.indexOf('oo') > -1; });

이 옷이 마음에 들 겁니다.

결정된 프롭의 첫 번째 인스턴스에 대한 개체 검색:

var obj = {a:'Saludos',
            b:{b_1:{b_1_1:'Como estas?',b_1_2:'Un gusto conocerte'}},
           d:'Hasta luego'
            }
function scan (element,list){
    var res;
    if (typeof(list) != 'undefined'){
        if (typeof(list) == 'object'){
            for(key in list){
               if (typeof(res) == 'undefined'){
                res = (key == element)?list[key]:scan(element,list[key]);
               }
            });
        }
    }
    return res;
}
console.log(scan('a',obj));

언급URL : https://stackoverflow.com/questions/4079274/how-to-get-an-objects-properties-in-javascript-jquery

반응형