JavaScript-정의되지 않은 속성을 설정할 수 없습니다.
내 코드 :
var a = "1",
b = "hello",
c = { "100" : "some important data" },
d = {};
d[a]["greeting"] = b;
d[a]["data"] = c;
console.debug (d);
다음과 같은 오류가 발생합니다.
Uncaught TypeError : 정의되지 않은 'greeting'속성을 설정할 수 없습니다.
연관 배열과 비슷한 것을 시도하고 있습니다. 왜 이것이 작동하지 않습니까?
d[a]
어떤 값도 설정하지 않았습니다.
이 때문에는로 d[a]
평가되며 undefined
에서 속성을 설정할 수 없습니다 undefined
.
d[a] = {}
바로 추가하면 d = {}
예상대로 작동합니다.
또는 객체 이니셜 라이저를 사용할 수 있습니다.
d[a] = {
greetings: b,
data: c
};
또는 d
익명의 함수 인스턴스에서의 모든 속성을 설정할 수 있습니다 .
d = new function () {
this[a] = {
greetings: b,
data: c
};
};
ES2015 기능을 지원하는 환경에있는 경우 계산 된 속성 이름을 사용할 수 있습니다 .
d = {
[a]: {
greetings: b,
data: c
}
};
d[a]
연관 배열 또는 객체 로 설정 해야합니다.
d[a] = [];
d[a] = {};
설정하지 않으면 다음과 같은 일이 발생합니다.
d[a] == undefined
, 그래서 당신은 undefined['greeting']=b;
정의에 따라 undefined에는 속성이 없습니다. 따라서받은 오류입니다.
에 저장된 개체 d[a]
가 아무것도 설정되지 않았습니다. 따라서, d[a]
평가 undefined
. undefined
:)에 속성을 할당 할 수 없습니다 . 다음에 개체 또는 배열을 할당해야합니다 d[a]
.
d[a] = [];
d[a]["greeting"] = b;
console.debug(d);
자바 스크립트에서 거의 모든 객체이며, null
및 undefined
예외입니다.
의 인스턴스 Array
는 개체입니다. 정의되지 않은, 때문에의이 같은 이유로, 배열의 속성을 설정할 수 있도록, 당신이 할 수없는 일련의 특성 NOT 객체
나는 d [a]가 존재하는지 그리고 초기화하지 않았는지 확인하기 위해 간단한 검사를 할 것이다.
var a = "1",
b = "hello",
c = { "100" : "some important data" },
d = {};
if (d[a] === undefined) {
d[a] = {}
};
d[a]["greeting"] = b;
d[a]["data"] = c;
console.debug (d);
참고URL : https://stackoverflow.com/questions/7479520/javascript-cannot-set-property-of-undefined
'developer tip' 카테고리의 다른 글
clojure 키워드를 문자열로 변환하는 방법은 무엇입니까? (0) | 2020.08.25 |
---|---|
JSF MVC 프레임 워크에서 MVC는 어떤 구성 요소입니까? (0) | 2020.08.25 |
문자열에서 수학 표현식 평가 (0) | 2020.08.24 |
jQuery 요소의 여백과 패딩을 얻는 방법? (0) | 2020.08.24 |
포함 된 HTML과 함께 link_to 사용 (0) | 2020.08.24 |