대상: js 속성 이름에 변수를 사용할 수 있습니다
예: js 객체 객체, 객체에 속성을 할당할 때 다음 방법을 사용할 수 있습니다
변수
object.prop1 = "값1";
object.prop2 = "값2"
다음 방법을 사용할 수도 있습니다.
object.push({prop1:"value1"});
object.push({prop2:"value2"})
여기서 prop1은 속성 이름으로 사용되며 다음과 같이 직접 사용하거나 따옴표로 묶을 수 있습니다.
object.push({"prop1":"value1"})
표현식의 의미는 동일합니다. 즉, prop1은 상수로만 인식될 수 있으며 변수이더라도 쓸모가 없습니다. 예:
var prop1 = "prop2"
object.push({prop1:"value1"})
다음과 같은 방식으로 객체를 통해 prop2에 액세스하면 어떻게 되나요?
Alert(object.prop2)
물어볼 필요는 없습니다. 물론 정의되지 않았지만 object.prop1에 액세스하는 것은 "value1"입니다
이유는 이미 언급했습니다. 인용문 포함 여부에 관계없이 속성은 상수로 처리됩니다.
var arr=[];
arr['js']='jquery'
arr['css']='oocss'
var obj={};
for(var i in arr)
{
obj.i=arr[i]
}
경고(obj.js)
독자 여러분, 어떤 경고가 인쇄될지 추측해 보세요.
물론 정의되지 않았습니다.
다시 추측해 보세요. 경고(obj.i)가 발생하면 무엇이 인쇄될까요?
물론 oocss입니다. 왜죠? 이제 obj에는 하나의 속성 i만 있고 두 개의 루프를 통해 obj.i의 앞 부분을 후자로 덮어쓰게 됩니다.
요구가 있는 경우 속성을 동적으로 추가해야 합니다. 즉, 위의 예제 코드와 같이 Alert(obj.js)는 정의되지 않은 것이 아니라 jquery입니다. 수정하시겠습니까?
코드 복사
var obj={};
for(var i in arr)
{
obj[i]=arr[i]
}
경고(obj.js)
객체 obj를 배열로 처리하면 첨자와 유사한 메서드를 사용하여 객체에 속성과 속성 값을 할당할 수 있습니다. 그러나 객체는 여전히 객체이고 obj.length는 존재하지 않습니다. >