programing

JavaScript 개체: 이름으로 변수 속성에 문자열로 액세스합니다.

kingscode 2023. 1. 2. 22:48
반응형

JavaScript 개체: 이름으로 변수 속성에 문자열로 액세스합니다.

아래와 같은 javascript 오브젝트가 있는 경우

var columns = {
  left: true,
  center : false,
  right : false
}

오브젝트나 속성명을 모두 건네주는 기능을 가지고 있습니다.

//should return false
var side = read_prop(columns, 'right');

본체는 무엇일까?read_prop(object, property)어떻게 생겼나요?

함수는 필요 없습니다.괄호 표기법만 사용하시면 됩니다.

var side = columns['right'];

이것은 점 표기법과 같습니다.var side = columns.right;단,right괄호 표기법을 사용할 경우 변수, 함수 반환 값 등에서 가져올 수도 있습니다.

필요한 기능은 다음과 같습니다.

function read_prop(obj, prop) {
    return obj[prop];
}

아래 코멘트 중 원래 질문과 직접 관련이 없는 코멘트에 답하기 위해 여러 개의 괄호를 사용하여 중첩된 개체를 참조할 수 있습니다.다음과 같이 중첩된 개체가 있는 경우:

var foo = { a: 1, b: 2, c: {x: 999, y:998, z: 997}};

속성에 액세스 할 수 있습니다.xc다음과 같습니다.

var cx = foo['c']['x']

속성이 정의되지 않은 경우 참조하려고 하면 반환됩니다.undefined(없음)null또는false):

foo['c']['q'] === null
// returns false

foo['c']['q'] === false
// returns false

foo['c']['q'] === undefined
// returns true

SiefMaster의 답변은 100% 정확합니다. 그러나 이와 유사한 문제에 직면했습니다. 즉, 중첩된 개체(개체 내의 개체)에서 속성을 가져와야 하므로, 그의 답변 대신 재귀 솔루션을 만들면 깊이에 관계없이 모든 속성을 가져올 수 있는 명명법을 정의할 수 있습니다.

function fetchFromObject(obj, prop) {

    if(typeof obj === 'undefined') {
        return false;
    }

    var _index = prop.indexOf('.')
    if(_index > -1) {
        return fetchFromObject(obj[prop.substring(0, _index)], prop.substr(_index + 1));
    }

    return obj[prop];
}

지정된 속성 Resumb에 대한 문자열 참조 위치property1.property2

JsFiddle의 코드와 코멘트.

위의 답변으로 프로젝트를 지원받았기 때문에(중복 질문을 하고 여기에 회부받았기 때문에) VAR 내에 네스트 할 때 괄호 표기에 대한 답변(테스트 코드)을 제출합니다.

<html>
<head>
  <script type="text/javascript">
    function displayFile(whatOption, whatColor) {
      var Test01 = {
        rectangle: {
          red: "RectangleRedFile",
          blue: "RectangleBlueFile"
        },
        square: {
          red: "SquareRedFile",
          blue: "SquareBlueFile"
        }
      };
      var filename = Test01[whatOption][whatColor];
      alert(filename);
    }
  </script>
</head>
<body>
  <p onclick="displayFile('rectangle', 'red')">[ Rec Red ]</p>
  <br/>
  <p onclick="displayFile('square', 'blue')">[ Sq Blue ]</p>
  <br/>
  <p onclick="displayFile('square', 'red')">[ Sq Red ]</p>
</body>
</html>

언급URL : https://stackoverflow.com/questions/4255472/javascript-object-access-variable-property-by-name-as-string

반응형