<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script>
function show(){
var stock ={};
var nam;
var shars;
function getUser(){
nam = document.getElementById("idN0").value; //속성값을 받아오는 놈이구요
}
function getShare(){
shars = document.getElementById("idN1").value;// 속성의 값을 받아오는 놈입니다.
}
getUser();
getShare();
stock[nam] = shars
for(var i in stock){
result="property=" +i+"; "+"<br>"+" value="+stock[i] +"<br>";
document.write(result);
}
if('x' in stcok ) stock.x=a;
document.write(stock.x); // 만약속성값중 x가 있다면 값을 a로 출력하라... 라고 만들었습니다.
}
</script>
</HEAD>
<BODY>
<form id="frms">
<input type="text" value=" " id="idN0" > <br>
<input type="text" value=" " id="idN1" > <br>
<input type="button" value="submit" [안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xxonclick="show();">
</form>
<div id="view">
</div>
</BODY>
</HTML>
저렇게 사용하면 제가 기입한 값이 나오더라구요.. 덕분에 감사드립니다.
그 다음 후에 다시 저 속성과 값을 사용하기 위해서 input에다가 x를 기입하고 값은 일부러 숫자3으로 넣었습니다.
속성은 x로 나타나고 값은 제가 기입한 숫자3으로 나타나더군요.
그런데 구절 맨 마지막에 저렇게 다시 for in구문을 사용해서 값만 변경해서 출력하려고보니.. undefined가 나타나더라구요.
이미 제가 속성과 값을 지정해서 출력이 되는 것을 보았는데도 어떻게 undefined가 나올 수가 있는것이죠?
추신 - 제가 이런 질문을 드리는 이유는 음 왜 저값이 나오냐 안나오느냐가 아니라 이자바스크립트가 돌아가는 구조를
알고 싶어서 이렇게도 해보고 저렇게도 해보는 것입니다. 쓸데 없이 이런 것을 왜 하지.. 하셔도.. 기초를 다져주는
책이나 방법을 몰라서 그렇습니다. 매번 감사드립니다.
주말 잘 쉬시기를 바랍니다. (이런 질문 드리면서 잘 쉬시길 바란다는 것은.. 말이 어폐가 있는건가요?)
------------------------------------------------------------------
<script>
var Test = function(a){
this.a = a;
}
var Temp ={
'a' : function(a){ /* 질문입니다.이 함수를 값으로 사용할 때 Test.a(파랑색 줄에서 Test의 this.a=a라고 정의한 것 아닌가요?)라고 사용하면 왜 안될까요? */
this.a = a;
}
}
var test=new Temp["a"]();
if (test.constructor==Array)
{document.write("This is an Array")}
if (test.constructor==Boolean)
{document.write("This is a Boolean")}
if (test.constructor==Date)
{document.write("This is a Date")}
if (test.constructor==String)
{document.write("This is a String")}
if (test.constructor==RegExp)
{document.write("This is a Regular E-pression")}
if(test.constructor == Test)
{document.write("This is a Test")}
if(test.constructor == Temp["a"])
{document.write("This is a Temp")}
</script>
보시면서.. 답답하시죠.. 귀찮으시죠... 큰일이네요..ㅜ.ㅜ
삭제된 댓글 입니다.
아... 죄송해요.. 미쳤나봐요...ㅡ.ㅡ 저런.. 질문을.. 다시 해봐야지... 제 뜻은 저런 게 아니었는데.. 잠에 취해서 썼나..ㅡ.ㅡ
삭제된 댓글 입니다.
씻고 와서 다시 정리해서 질문합니다. this라는 것은 객체 자신을 가르키는 것으로 알고 있습니다. 그래서 var Test 는 함수의 이름이니깐 ...(함수는 객체이니깐) Test가 this가 아닐까 해서 this 대신에 Test.a라고 넣으면 왜 안될까요? 하고 질문드린겁니다.
아래 객체Temp는 'a'라는 문자열로 값에 함수가 들어가 있는데 var Test 함수식과 똑같습니다. 원래 함수를 속성 값으로 받을 수 있는 것은 알고있습니다. 함수를 두번쓸바에는 그럼 그냥 'a':Test(x/*매개변수니깐 x라고 써도 되죠?*/)라고 선언하면 안되나요? 왜 똑같은 함수를 두번이나 사용하는지 의문이 들었습니다.
덧붙혀서 함수를 객체의 속성값으로 받을 수있다면, 이미 객체선언을 하면서 함수를 값으로 넣었는데 왜.. 왜? 왜? Test함수를 넣었을까요? Test는 없어도 되는 것이 아닌가 싶어서요? 왜 있어야할까? ㅜ.ㅜ
오늘 좀 늦게와서.. 질문이 좀 늦었습니다... 죄송합니다. 주말은 잘 쉬셨나요? 아... 이런식으로 하다가.. 과연 자바스크립트가 내게로 올까요? ㅡ.ㅡ
휴... 제가 다시 읽어보니.. 질문 자체를 이해 못하게끔.. 주저리 주저리 써 놓았습니다. 죄송합니다.
한가지만 더 질문드릴게요.. var test = new Temp(); 이렇게 선언하면 될 것을 왜 ['a'] 연관배열을 선언했을까요? 이렇게 var test = new Temp['a'](); 선언한 이유는 변수 test는 연관배열의 속성a의 값으로 정의 된다는 뜻인가요? 즉 test={'a':test; } -->그럼 function(a)는? 아... 머리가 터지겠다.. 기본이 중요한 세상 왜 기본을 가르쳐주는 곳이 없단 말이냐? 아니면.. 내 머리가 안되는 건가..ㅡ.ㅡ
삭제된 댓글 입니다.
답변 감사드립니다. new라는 것은 함수구문을 호출해서 생성할 때만 사용하는군요... 휴. 문자열a 키가 갖고 있는 함수를 객체화라..
삭제된 댓글 입니다.
아.. 머리가 아파요... yojHi님은 오늘 하루 어떻게잘 보내셨나요?
넵..솔직히 말씀드리면 완전히 이해가 되는 것은 아니지만, 계속 노력할테니, 앞으로도 잘 부탁드립니다. 더불어서 너무 너무 감사드립니다. 항상. 꾸벅