Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

JavaScript/2011년스터디/서지혜: Difference between revisions

From ZeroWiki
No edit summary
 
(Repair batch-0002 pages from live compare)
 
(19 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<!-- MONIWIKI PageList(^JavaScript/2011년스터디) -->
* [[JavaScript/2011년스터디]]
* [[JavaScript/2011년스터디/3월이전]]
* [[JavaScript/2011년스터디/7월이전]]
* [[JavaScript/2011년스터디/CanvasPaint]]
* [[JavaScript/2011년스터디/JSON-js분석]]
* [[JavaScript/2011년스터디/URLHunter]]
* [[JavaScript/2011년스터디/김수경]]
* [[JavaScript/2011년스터디/박정근]]
* [[JavaScript/2011년스터디/서지혜]]
* [[JavaScript/2011년스터디/윤종하]]
__TOC__
= 1월 11일 =
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
   
    &lt;head&gt;
        &lt;title&gt;
            짜가계산기
        &lt;/title&gt;
        &lt;meta name="Generator" content="EditPlus"&gt;
        &lt;meta name="Author" content=""&gt;
        &lt;meta name="Keywords" content=""&gt;
        &lt;meta name="Description" content=""&gt;
        &lt;meta http-equiv="Content-Type" content="text/html; charset=ks_c_5601-1987"&gt;
    &lt;/head&gt;
   
    &lt;body&gt;
        &lt;style&gt;
            .btn{width:40} .btn2{width:88}
        &lt;/style&gt;
        &lt;script&gt;
            old = new Array();
   
   
&lt;head&gt;
            function init() {
&lt;meta http-equiv="Content-Type" content="text/html; charset=ks_c_5601-1987"&gt;
                document.f.t.value = "";
&lt;title&gt;새 페이지 1&lt;/title&gt;
                isOp = false;
&lt;/head&gt;
                str = 0;
                oprt = "";
            }
   
   
&lt;body&gt;
            function putn(value) {
&lt;style&gt;
                if (!isOp) {
  .btn{width:40}
                    document.f.t.value += value;
  .btn2{width:88}
                } else if (isOp) {
&lt;/style&gt;
                    document.f.t.value = value;
&lt;script&gt;
                    isOp = false;
                } else {
                    document.f.t.value += value;
                }
            }
   
   
            function operator(value) {
                str = document.f.t.value;
                isOp = true;
                oprt = value;
            }
   
   
  flag=0;//연산식이 입력되는 횟수플래그
            function calc() {
  str=0;//입력수치
str2 = document.f.t.value;
  opr="";//연산자
                if (str != "" &amp;&amp; str2 != "") {
                    str = eval(str + oprt + str2);
                    document.f.t.value = str;
                }
            }
   
   
  old=new Array();
            function reset() {
                str = "";
                document.f.t.value = "";
                oprt = "";
                isOp = false;
            }
        &lt;/script&gt;
       
        &lt;body onload=init();&gt;
            &lt;table border=6 width="247"&gt;
                &lt;tr&gt;
                    &lt;form name=f&gt;
                        &lt;td colspan=5&gt;
                            &lt;input type=text name=t value="" size=30&gt;
                        &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button onclick=putn(7) value=7 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button onclick=putn(8) value=8 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="41"&gt;
                        &lt;input type=button onclick=putn(9) value=9 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button onclick=operator("/") value="/" class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button value="pow" class=btn&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;Td width="40" height="25"&gt;
                        &lt;input type=button onclick=putn(4) value=4 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40" height="25"&gt;
                        &lt;input type=button onclick=putn(5) value=5 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="41" height="25"&gt;
                        &lt;input type=button onclick=putn(6) value=6 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40" height="25"&gt;
                        &lt;input type=button onclick=operator("*") value="*" class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40" height="25"&gt;
                        &lt;input type=button value="sqrt" class=btn&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button onclick=putn(1) value=1 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button onclick=putn(2) value=2 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="41"&gt;
                        &lt;input type=button onclick=putn(3) value=3 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button onclick=operator("-") value="-" class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button value="log" class=btn&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button onclick=putn(0) value=0 class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button onclick=putn('.') value="." class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="41"&gt;
                        &lt;input type=button onclick=operator("+") value="+" class=btn&gt;
                    &lt;/td&gt;
                    &lt;td width="40"&gt;
                        &lt;input type=button value="%" class=btn&gt;
                    &lt;/td&gt;
                     
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td colspan=2&gt;
                        &lt;input type=button onclick=reset() value="지우기" class=btn2&gt;
                    &lt;/td&gt;
                    &lt;td colspan=3&gt;
                        &lt;input type=button onclick="calc()" value="계산하기" class=btn2&gt;
                    &lt;/td&gt;
                    &lt;/form&gt;
            &lt;/table&gt;
        &lt;/body&gt;
   
   
  //초기화
&lt;/html&gt;
  function init(){
 
  document.f.t.value=""; //입력필드 소거
= 1월 18일 =
  str=0;flag=0;opr=""; //입력수치, 횟수플래그, 연산자
 
  }
** 중첩함수
* 중첩 함수 예
function duple_test() {
  function inner() {
    /* body comes here */
  }
} // good
* 내부 익명함수는 접근할 수 없기 때문에 안됨
function duple_test() {
function () {
          /* body comes here */
} // anonymous inner class can't be reached
} // bad
* 이 방법은 된다
function duple_test() {
var one = function () {
} // anonymous but reachable
}
* 이것도 된다
function duple_test() {
(function () {
          /* body comes here */
})(); // 바로 실행해 버리니 괜찮음
}
* 여러번 중첩되어도 된다
function one(){
function two() {
function three() {
                      /* body comes here */
}
}
} // good
 
** 함수 파라메터
/* Arguments 객체 테스트 */
function arg_test(one, two) {
document.write(one);
document.write(arguments&#91;0&#93;);
document.write(two);
document.write(arguments&#91;1&#93;);
   
   
  //숫자를 입력받아 추가한다
document.write(arguments.length);
  function putn(v){
  if(flag==0){ //연산식이 입력되기 전에는
document.write(arguments&#91;3&#93;); // 존재하지 않는 배열을 참조한다면? -&gt; undefined
    document.f.t.value+=v; //텍스트 필드를 추가한다.
  }else {
    if(flag==1){ //연산식이 처음 입력되면,
    document.f.t.value=v; //입력필드를 갱신
    } else {
    document.f.t.value+=v; //텍스트 필드를 추가한다.
    }
    flag++; //플래그 증가
  }
  }
   
   
  //연산식이 입력되면, 기존 스트링과, 연산자를 변수에 담고, 플래그를 증가한다.
arguments&#91;3&#93; = 5; // 내부에서 파라메터 삽입 가능!!
  function cal(h){
document.write(arguments&#91;3&#93;);
  old[old.length]=str;
}
  str=document.f.t.value;
  odr=opr;
  opr=h;
  flag=1;
  if(h=='%'){
    document.f.t.value=eval(old[old.length-1]*str/100);  
  } else {
    if(odr=='%'){
    document.f.t.value=eval(old[old.length-2]+opr+str);
    }
  }
  }
   
   
  function cal2(h){ //제곱,제곱근,로그등의 특수연산을 담당하는 함수
arg_test(3, 4);
  str=document.f.t.value;
 
  switch(h){
* 클래스 생성
    case "pow":
    document.f.t.value=eval("Math."+h+"(str,2)");
    break;
    case "sqrt":
    document.f.t.value=eval("Math."+h+"(str,2)");
    break;
    case "log":
    document.f.t.value=eval("Math."+h+"(str)");
    break;
    }
  }
   
   
  //= 이 입력되면,
/* 클래스 만들기 */
  function sol(){
function Class_test(one, two) {
  //텍스트 필드에, 기존입력수치와 신규입력값의 연산결과를 출력한다.
this.one = one;
  document.f.t.value=eval(str+opr+document.f.t.value);
this.two = two;
  }
}
/* 객체 생성 */
var instance = new Class_test(1, 2);
 
* 상속
** 자바스크립트의 상속은 객체지향언어의 상속과 다르다.
function MyClass(id, name){
this.id = id;
this.name = name;
}
var class_test = new MyClass("1", "test");
   
   
  //Clear등의 처리
  MyClass.prototype.name1 = "name1";
  function adj(a){
  class_test.name2 = "name2";
  switch(a){ //매개변수에 따라 처리
  document.write(class_test.name1); // 여기서 상속이 일어나야함....
    case 0: //clear이면,
}
    init(); //초기화
 
    break;
* 슈퍼클래스화, 서브클래스화
  }
  // 슈퍼클래스
  }
function Parent(m, f) {
  &lt;/script&gt;
this.mother = m;
&lt;body onload=init();&gt;
this.father = f;
&lt;table border=6 width="247"&gt;&lt;tr&gt;
  }
  &lt;form name=f&gt;
* 서브클래스화 1
&lt;td colspan=5&gt;
// 자식클래스 1
  &lt;input type=text name=t value="" size=30&gt;
  function Child(m, f, b, s) {
  &lt;/td&gt;&lt;/tr&gt;
Parent.call(m, f); // 생성자 체이닝
&lt;tr&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=putn(7) value=7 class=btn&gt;&lt;/td&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=putn(8) value=8 class=btn&gt;&lt;/td&gt;&lt;td width="41"&gt;
  &lt;input type=button onclick=putn(9) value=9 class=btn&gt;&lt;/td&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=cal("/") value="/" class=btn&gt;&lt;/td&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=cal2("pow") value="pow" class=btn&gt;&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;Td width="40" height="25"&gt;
  &lt;input type=button onclick=putn(4) value=4 class=btn&gt;&lt;/td&gt;
  &lt;td width="40" height="25"&gt;
  &lt;input type=button onclick=putn(5) value=5 class=btn&gt;&lt;/td&gt;
  &lt;td width="41" height="25"&gt;
  &lt;input type=button onclick=putn(6) value=6 class=btn&gt;&lt;/td&gt;
  &lt;td width="40" height="25"&gt;
  &lt;input type=button onclick=cal("*") value="*" class=btn&gt;&lt;/td&gt;
  &lt;td width="40" height="25"&gt;
  &lt;input type=button onclick=cal2("sqrt") value="sqrt" class=btn&gt;&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=putn(1) value=1 class=btn&gt;&lt;/td&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=putn(2) value=2 class=btn&gt;&lt;/td&gt;&lt;td width="41"&gt;
  &lt;input type=button onclick=putn(3) value=3 class=btn&gt;&lt;/td&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=cal("-") value="-" class=btn&gt;&lt;/td&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=cal2("log") value="log" class=btn&gt;&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=putn(0) value=0 class=btn&gt;&lt;/td&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=putn('.') value=. class=btn&gt;&lt;/td&gt;&lt;td width="41"&gt;
  &lt;input type=button onclick=cal("+") value="+" class=btn&gt;&lt;/td&gt;&lt;td width="40"&gt;
  &lt;input type=button onclick=cal("%") value="%" class=btn&gt;&lt;/td&gt;
   &lt;/td&gt;&lt;/tr&gt;
   
   
&lt;tr&gt;
this.brother = b;
&lt;td colspan=2&gt;
this.sister = s;
  &lt;input type=button onclick=adj(0) value="지우기" class=btn2&gt;&lt;/td&gt;&lt;td colspan=3&gt;
}
  &lt;input type=button onclick=sol() value="계산하기" class=btn2&gt;&lt;/td&gt;
   
   
  &lt;/form&gt;
  Child.prototype = new Parent();
  &lt;/table&gt;
Child.prototype.constructor = Child;
* 서브클래스화 2
// 자식클래스 2
  function Child(m, f, b, s) {
this.superclass(m, f); // 생성자 체이닝
   
   
&lt;/body&gt;
this.brother = b;
this.sister = s;
}
   
   
  &lt;/html&gt;
  Child.prototype.superclass = Parent;


* 정규표현식
/* 정규표현식 */
var sample_string = "string for regular expression pattern matching. perl, python, ruby, javascript";
sample_string.match(/s/); // 지역검색
sample_string.match(/s/g); // 전역검색
sample_string.match(/perl|python/g); // &#91;"perl", "python"&#93;
sample_string.match(/p(erl|ython)/); // &#91;"perl", "erl"&#93; 왜 이렇게 나올까
sample_string.match(/p(erl|ython)/g); // &#91;"perl", "python"&#93; 이러면 되요
sample_string.match(/p&#91;erl|ython&#93;/); // &#91;"pr"&#93; 왜 이게나와아아아아ㅏ아
* 네임스페이스
var org = {};
org.zeropage = 0;
org.zeropage.namespace = 0; // 이건되고
//org.zeropage.namespace.function1 = "" // 이건 왜 안됨?
org.zeropage.namespace = function() {
document.write("네임스페이스 안의 함수 테스트");
}
org.zeropage.namespace();
var simple.zeropage = org.zeropage.namespace;
simple.zeropage();
/* TypeError: Object 0 has no method 'namespace' */
var org = {};
org.zeropage = 0;
org.zeropage.namespace = 0; // 이건되고
//org.zeropage.namespace.function1 = 0 // 이건 왜 안됨?
org.zeropage.namespace = function() {
document.write("네임스페이스 안의 함수 테스트");
}
org.zeropage.namespace();
var simple.zeropage = org.zeropage.namespace;
simple.zeropage();

Latest revision as of 00:16, 27 March 2026

= 1월 11일 =
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    
    <head>
        <title>
            짜가계산기
        </title>
        <meta name="Generator" content="EditPlus">
        <meta name="Author" content="">
        <meta name="Keywords" content="">
        <meta name="Description" content="">
        <meta http-equiv="Content-Type" content="text/html; charset=ks_c_5601-1987">
    </head>
    
    <body>
        <style>
            .btn{width:40} .btn2{width:88}
        </style>
        <script>
            old = new Array();

            function init() {
                document.f.t.value = "";
                isOp = false;
                str = 0;
                oprt = "";
            }

            function putn(value) {
                if (!isOp) {
                    document.f.t.value += value;
                } else if (isOp) {
                    document.f.t.value = value;
                    isOp = false;
                } else {
                    document.f.t.value += value;
                }
            }

            function operator(value) {
                str = document.f.t.value;
                isOp = true;
                oprt = value;
            }

            function calc() {
			str2 = document.f.t.value;
                if (str != "" && str2 != "") {
                    str = eval(str + oprt + str2);
                    document.f.t.value = str;
                }
            }

            function reset() {
                str = "";
                document.f.t.value = "";
                oprt = "";
                isOp = false;
            }
        </script>
        
        <body onload=init();>
            <table border=6 width="247">
                <tr>
                    <form name=f>
                        <td colspan=5>
                            <input type=text name=t value="" size=30>
                        </td>
                </tr>
                <tr>
                    <td width="40">
                        <input type=button onclick=putn(7) value=7 class=btn>
                    </td>
                    <td width="40">
                        <input type=button onclick=putn(8) value=8 class=btn>
                    </td>
                    <td width="41">
                        <input type=button onclick=putn(9) value=9 class=btn>
                    </td>
                    <td width="40">
                        <input type=button onclick=operator("/") value="/" class=btn>
                    </td>
                    <td width="40">
                        <input type=button value="pow" class=btn>
                    </td>
                </tr>
                <tr>
                    <Td width="40" height="25">
                        <input type=button onclick=putn(4) value=4 class=btn>
                    </td>
                    <td width="40" height="25">
                        <input type=button onclick=putn(5) value=5 class=btn>
                    </td>
                    <td width="41" height="25">
                        <input type=button onclick=putn(6) value=6 class=btn>
                    </td>
                    <td width="40" height="25">
                        <input type=button onclick=operator("*") value="*" class=btn>
                    </td>
                    <td width="40" height="25">
                        <input type=button value="sqrt" class=btn>
                    </td>
                </tr>
                <tr>
                    <td width="40">
                        <input type=button onclick=putn(1) value=1 class=btn>
                    </td>
                    <td width="40">
                        <input type=button onclick=putn(2) value=2 class=btn>
                    </td>
                    <td width="41">
                        <input type=button onclick=putn(3) value=3 class=btn>
                    </td>
                    <td width="40">
                        <input type=button onclick=operator("-") value="-" class=btn>
                    </td>
                    <td width="40">
                        <input type=button value="log" class=btn>
                    </td>
                </tr>
                <tr>
                    <td width="40">
                        <input type=button onclick=putn(0) value=0 class=btn>
                    </td>
                    <td width="40">
                        <input type=button onclick=putn('.') value="." class=btn>
                    </td>
                    <td width="41">
                        <input type=button onclick=operator("+") value="+" class=btn>
                    </td>
                    <td width="40">
                        <input type=button value="%" class=btn>
                    </td>
                     
                    </td>
                </tr>
                <tr>
                    <td colspan=2>
                        <input type=button onclick=reset() value="지우기" class=btn2>
                    </td>
                    <td colspan=3>
                        <input type=button onclick="calc()" value="계산하기" class=btn2>
                    </td>
                    </form>
            </table>
        </body>

</html>
= 1월 18일 =
    • 중첩함수
  • 중첩 함수 예
function duple_test() {
  function inner() {
    /* body comes here */
  }
}	// good
  • 내부 익명함수는 접근할 수 없기 때문에 안됨
function duple_test() {
	function () {
          /* body comes here */
	} // anonymous inner class can't be reached
}	// bad
  • 이 방법은 된다
function duple_test() {
	var one = function () {
	} // anonymous but reachable
}	
  • 이것도 된다
function duple_test() {
	(function () {
          /* body comes here */
	})(); // 바로 실행해 버리니 괜찮음
}	
  • 여러번 중첩되어도 된다
function one(){
	function two() {
		function three() {
                      /* body comes here */
		}
	}
}	// good
    • 함수 파라메터
/* Arguments 객체 테스트 */
function arg_test(one, two) {
	document.write(one);
	document.write(arguments[0]);
	
	document.write(two);
	document.write(arguments[1]);

	document.write(arguments.length);

	document.write(arguments[3]);	// 존재하지 않는 배열을 참조한다면? -> undefined

	arguments[3] = 5;				// 내부에서 파라메터 삽입 가능!!
	document.write(arguments[3]);
}

arg_test(3, 4);
  • 클래스 생성
/* 클래스 만들기 */
function Class_test(one, two) {
	this.one = one;
	this.two = two;
}
/* 객체 생성 */
var instance = new Class_test(1, 2);
  • 상속
    • 자바스크립트의 상속은 객체지향언어의 상속과 다르다.
function MyClass(id, name){
	this.id = id;
	this.name = name;
}
var class_test = new MyClass("1", "test");

MyClass.prototype.name1 = "name1";
class_test.name2 = "name2";
document.write(class_test.name1);	// 여기서 상속이 일어나야함....
}
  • 슈퍼클래스화, 서브클래스화
// 슈퍼클래스
function Parent(m, f) {
	this.mother = m;
	this.father = f;
}
  • 서브클래스화 1
// 자식클래스 1
function Child(m, f, b, s) {
	Parent.call(m, f);	// 생성자 체이닝

	this.brother = b;
	this.sister = s;
}

Child.prototype = new Parent();
Child.prototype.constructor = Child;
  • 서브클래스화 2
// 자식클래스 2
function Child(m, f, b, s) {
	this.superclass(m, f);	// 생성자 체이닝

	this.brother = b;
	this.sister = s;
}

Child.prototype.superclass = Parent;
  • 정규표현식
/* 정규표현식 */
var sample_string = "string for regular expression pattern matching. perl, python, ruby, javascript";
sample_string.match(/s/);	// 지역검색
sample_string.match(/s/g);	// 전역검색

sample_string.match(/perl|python/g);		// ["perl", "python"]
sample_string.match(/p(erl|ython)/);	// ["perl", "erl"] 왜 이렇게 나올까
sample_string.match(/p(erl|ython)/g);	// ["perl", "python"] 이러면 되요
sample_string.match(/p[erl|ython]/);	// ["pr"] 왜 이게나와아아아아ㅏ아

  • 네임스페이스
var org = {};
org.zeropage = 0;

org.zeropage.namespace = 0;					// 이건되고
//org.zeropage.namespace.function1 = ""		// 이건 왜 안됨?
org.zeropage.namespace = function() {
	document.write("네임스페이스 안의 함수 테스트");
}

org.zeropage.namespace();
var simple.zeropage = org.zeropage.namespace;
simple.zeropage();


/* TypeError: Object 0 has no method 'namespace' */
var org = {};
org.zeropage = 0;

org.zeropage.namespace = 0;					// 이건되고
//org.zeropage.namespace.function1 = 0		// 이건 왜 안됨?
org.zeropage.namespace = function() {
	document.write("네임스페이스 안의 함수 테스트");
}

org.zeropage.namespace();
var simple.zeropage = org.zeropage.namespace;
simple.zeropage();