자바스크립트 - 구조체 struct
자바스크립트에서는 구조체가 없다.
함수로 비슷하게 사용하는 방법이다.
또한, 이 방법은 static 변수를 지원하지않는 자바에서, static과 유사한 기능을 제공해준다.
예1)
function struct_Object()
{
var value,data;//값을 대입해봐야, 효과가 없다. new 이후에 넣어주어야 한다.
}
function new_Object()
{
var a=new struct_Object();
a.value=0;
a.data="";
return a;
}
var my_struct=new struct_Object();
my_struct.value=1;
my_struct.data="문자열 데이터";
예2)
function struct_Object()
{
var value,data,control,rect;
}
function new_Object()
{
var a=new struct_Object();
a.value=0;
a.data="temp111";
a.control=new_Control();
a.rect=new_RECT();
return a;
}
function은 Object개념이된다. c언어에서는 코드에 불과한 함수가, 자바에서는 모든 객체를 보관하는 Object개념인것이다.
function 내부에 있는 경우에는 지역변수이나, new로 생성하면, 창이 닫힐때까지 존재한다.
function 내부의 지역변수는 function 클래스의 멤버변수라 볼 수 있고, 휘발성이나, new로 만들면, 휘발성이 아니게 된다.
문제점들
===================
struct안에 struct가 포함된 구조로 코드를 작성하였으나,
- 개발툴이 자바언어를 지원하지 않는 C언어 개발툴이라, 멤버작성에 어려움이 있었다.
C언어 개발툴에서는 '.'을 찍으면, 멤버변수를 선택할 수 있어,
오타없이 코드작성이 가능하였으나, 이런 기능이 없어, 오타가 많이 발생한다.
- new를 사용하여, struct안에 struct를 class처럼 사용했으나, 코드 오타때문인지, undefined으로 나타난다.
=>new로 생성후, 초기값을 넣어주어야 한다.
"function struct_Object()"함수에서는 초기값을 넣어주어도 효과가 없다. new_Object()함수가 필요.
- new를 사용하는 방식은 변수의 존재를 보장하지 못한다는 글이 있었다.
아래 방식이 좋다고 한다.
var array = []; // empty array
// object literal notation to create your structures
array.push({ name: 'abc', value: 'def' });
array.push({ name: 'ghi', value: 'jkl' });
아래 방법으로 성공
function new_my_struct()
{
var i,a={i:[],o:[]};
for(i=0;i<4;i++)
{
a.i[i]={level:i,vol:0};
a.o[i]={level:0,vol:0};
}
return a;
}
'자바스크립트' 카테고리의 다른 글
자바스크립트 프로그래밍 장단점 (1) | 2017.03.04 |
---|---|
html vs canvas 장단점 (0) | 2017.03.04 |
자바스크립드 - 다차원 배열 테스트 (0) | 2017.03.01 |
javascript - 이미지 좌표(위치) 구하기 (0) | 2017.02.18 |
HTML - CSS3 vs JavaScript (0) | 2016.06.18 |