developer tip

속성 이름에 대한 변수를 사용하여 객체 생성

copycodes 2020. 10. 11. 10:45
반응형

속성 이름에 대한 변수를 사용하여 객체 생성


객체 생성을 위해 객체 리터럴 속성에서 변수 이름을 사용할 수 있습니까?

function createJSON (propertyName){
    return { propertyName : "Value"};
}

var myObject = createJSON("myProperty");

console.log(myObject.popertyName);  // prints "value"
console.log(myObject.myProperty);  // Does not exist

속성 이름에 변수를 사용하려면 계산 된 속성 이름을 사용할 수 있습니다 . 대괄호 사이에 변수 이름을 넣으십시오.

var foo = "bar";
var ob  = { [foo]: "something" }; // ob.bar === "something"

Internet Explorer 지원을 원하면 ES5 접근 방식을 사용해야합니다 (위와 같이 최신 구문을 작성한 다음 Babel 을 적용하여 얻을 수 있음 ).

먼저 객체를 만든 다음 대괄호 표기법을 사용하여 속성을 추가합니다 .

var foo = "bar";
var ob  = {};
ob[foo] = "something"; // === ob.bar = "something"

프로그래밍 방식으로 JSON을 생성하려면 JSON 형식을 따르는 문자열로 객체를 직렬화해야합니다. 예를 들어 JSON.stringify방법으로 .


ES6는 계산 된 속성 이름을 도입하여 다음을 수행 할 수 있습니다.

function CreateJSON (propertyName){
    var myObject = { [propertyName] : "Value"};
}

브라우저 지원은 현재 미미합니다.


다음과 같이 할 수 있습니다.

  var myObject = {};
  CreateProp("myProperty","MyValue");

  function CreateProp(propertyName, propertyValue)
  {
      myObject[propertyName] = propertyValue;
      alert(myObject[propertyName]);  // prints "MyValue" 
  };

그래도 나는이 구문을 많이 선호합니다.

function jsonObject()
{
};
var myNoteObject = new jsonObject();

function SaveJsonObject()
{
    myNoteObject.Control = new jsonObject();
    myNoteObject.Control.Field1= "Fred";
    myNoteObject.Control.Field2= "Wilma";
    myNoteObject.Control.Field3= "Flintstone";
    myNoteObject.Control.Id= "1234";
    myNoteObject.Other= new jsonObject();
    myNoteObject.Other.One="myone";
};

그런 다음 다음을 사용할 수 있습니다.

SaveJsonObject();
var myNoteJSON = JSON.stringify(myNoteObject);

참고 : http://www.json.org/js.html 에서 json2.js를 사용합니다.


적절할 수있는 한 가지 (이제 JSON 기능은 최신 브라우저에 공통적이며 json2.js는 완벽하게 유효한 폴 백임) JSON 문자열을 생성 한 다음 구문 분석하는 것입니다.

function func(prop, val) {
    var jsonStr = '{"'+prop+'":'+val+'}';
    return JSON.parse(jsonStr);
}

var testa = func("init", 1);
console.log(testa.init);//1

JSON 속성 이름은 큰 따옴표로 묶어야합니다.

참고URL : https://stackoverflow.com/questions/3153969/create-object-using-variables-for-property-name

반응형