문제

var something = {

wtf: null,
omg: null
};

내 JavaScript 지식은 마지막으로 프로그래밍 된 이후로 여전히 끔찍하게 고르지 만 지금은 대부분을 다시 한 번 생각합니다. 이것을 제외하고. 나는 전에 이것을 본 적이 없다. 무엇입니까? 그리고 그것에 대해 어디에서 더 배울 수 있습니까?

도움이 되었습니까?

해결책

두 가지 속성을 가진 객체 문자 그대로입니다. 일반적으로 이것은 JS가 해당 데이터 구조를 기본적으로 지원하지 않기 때문에 사람들이 연관 배열 또는 해시를 만드는 방법입니다. 여전히 본격적인 객체이지만 기능을 속성으로 추가 할 수도 있습니다.

var myobj = {
    name: 'SO',
    hello: function() {
        alert(this.name);
    }
};

그리고 for 루프를 사용하여 속성을 반복 할 수 있습니다.

for (i in myobj) {
    // myobj[i]
    // Using the brackets (myobj['name']) is the same as using a dot (myobj.name)
}

다른 팁

객체 문자 그대로 구문입니다. 'wft'와 'omg'은 속성 이름 인 반면 Null과 Null은 속성 값입니다.

다음과 같습니다.

var something = new Object();
something.wtf = null;
something.omg = null;

Object Literals에서 Mozilla의 문서를 확인하십시오. http://developer.mozilla.org/en/core_javaScript_1.5_guide:Literals#Object_Literals

"나는 JavaScript의 연관 배열을 원한다"의 설명 (많은 경우에 객체 리터럴이 사용되는 것)의 설명

에서 "마스터 링 자바 스크립트 어레이"

연관 배열은 숫자 대신 인덱스 대신 문자열을 사용하는 배열입니다.

var normalArray    = [];
    normalArray[1] = 'This is an enumerated array';

    alert(normalArray[1]);   // outputs: This is an enumerated array

var associativeArray           = [];
    associativeArray['person'] = 'John Smith';

    alert(associativeArray['person']); // outputs: John Smith   

JavaScript에는 연관 배열이 없으며 지원하지 않습니다. 그러나… JavaScript의 모든 배열은 객체이며 JavaScript의 객체 구문은 연관 배열의 기본 에뮬레이션을 제공합니다. 이러한 이유로 위의 예제 코드는 실제로 작동합니다. 이것은 실제 배열이 아니며 사용하려고하면 진정한 함정이 있음을 경고합니다. 예제의 '사람'요소는 .length, .sort (), .splice () 및 기타 모든 내장 속성 및 메소드와 같이 배열 객체의 속성 및 메소드의 일부가됩니다.

다음 루프로 객체의 속성을 고려할 수 있습니다…

var associativeArray = [];
associativeArray["one"] = "First";
associativeArray["two"] = "Second";
associativeArray["three"] = "Third";
for (i in associativeArray) { 
   document.writeln(i+':'+associativeArray[i]+', '); 
   // outputs: one:First, two:Second, three:Third
};

위의 예에서, AssociatiVearray.length는 실제로 어레이에 아무것도 넣지 않았기 때문에 AssociatiVearray의 객체에 넣습니다. AssociativeArray [0]는 정의되지 않습니다.

위의 예제의 루프는 또한 데이터뿐만 아니라 배열에 추가 된 모든 메소드, 속성 및 프로토 타입을 선택합니다. 프로토 타입 라이브러리에서 사람들이 가지고있는 많은 문제는 프로토 타입이 배열 객체에 몇 가지 유용한 프로토 타입 기능을 추가하고 i의 X 루프에서 해당 추가 방법을 선택하기 때문에 연관 배열이 중단된다는 것입니다. 그것이 가난한 사람의 연관 배열로 배열/객체를 사용하는 구덩이입니다.

마지막 예로, 이전 코드는 AssiciatiVearray를 배열 ([]), 객체 ({}), 정규식 (//), String ( "") 또는 기타 JavaScript 객체로 정의하는지 여부에 관계없이 작동합니다. .

결론은 - 연관 배열을 사용하려고 시도하지 말고, 배열이 아닌 객체 속성에 대한 코드.

그것은 물체 문자 그대로 (또는 때로는 a 바닐라 객체 해시 클래스가있는 라이브러리에서).

같은 것 :

var o = new Object();
o.wtf = null;
o.omg = null;

이것은 물체 문자 그대로입니다. 효과적으로 다음과 같습니다.

var something = new Object();
something["wtf"] = null;
something["omg"] = null;

나는 그것의 2 개의 속성이있는 객체, WTF 및 OMG를 믿는다.

넌 말할 수있다

something.wtf = "myMessage";
alert(something.wtf);

json.org를 확인하십시오

이 코드 :

var something = {wtf:null}

다음과 같은 효과가 있습니다.

var something={};
something.wtf=null;

또는 불필요한 말 :

var something=new Object();
something.wtf=null;

그리고 마지막 줄은 다음과 동일하다는 것을 기억하는 것이 유용합니다.

something["wtf"]=null;

따라서 사용할 수 있습니다.

var myName="wtf";
something[myName]=null;

이것은 인라인 JavaScript 객체 인스턴스화의 예입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top