IT

JavaScript / jQuery에서 객체의 속성을 얻는 방법은 무엇입니까?

lottoking 2020. 8. 30. 09:04
반응형

JavaScript / jQuery에서 객체의 속성을 얻는 방법은 무엇입니까?


자바 스크립트 / jQuery를에서 alertobject-가 있으면 [object]또는[object Object]

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

  1. 이 두 차이점의 차이점은 무엇입니까

  2. 이것은 어떤 유형의 객체입니까

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

?


JavaScript의 기본 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);
});

여섯 개 기본 유형을 제외하고 , 모든 ECMA- / 자바 클래스입니다. 어레이; 기능; 모든 것이 수업입니다. 프리미티브의 대부분도 실제로는 메소드 선택을 가지고 있습니다. 필요한 경우 후드 아래의 습기로 주조됩니다. 기본 클래스 이름을 알기 위해 다음 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. Slashnick 에서 빌린 수업을받을 표준 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()

i)이 두 개체의 차이점은 무엇입니까

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

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

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

를 사용하여 객체의 "유형"(내부 클래스)을 가져올 수 있습니다 Object.prototype.toString. 사양에 따라 항상 형식의 문자열을 반환해야합니다 [object [[Class]]]. 여기서는 Object , Array , Date , RegExp[[Class]] 등과 같은 내부 클래스 이름입니다 .이 메서드는 다음을 사용하여 모든 개체 (호스트 개체 포함)에 적용 할 수 있습니다.

Object.prototype.toString.apply(obj);

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


iii)이 개체가 포함하는 모든 속성과 각 속성의 값

ECMAScript 3에서는 for...in루프를 사용하여 열거 가능한 속성을 반복 할 수 있습니다 . 대부분의 기본 제공 속성은 열거 할 수 없습니다. 일부 호스트 개체도 마찬가지입니다. ECMAScript 5에서는를 사용하여 상속되지 않은 모든 속성의 이름이 포함 된 배열을 가져올 수 있습니다 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

반응형