<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title></title>
		<link>http://www.eybari.com/</link>
		<description></description>
		<language>ko</language>
		<pubDate>Sat, 01 Nov 2008 13:40:52 +0900</pubDate>
		<generator>Textcube 1.6.3 : Tenuto</generator>
		<image>
		<title></title>
		<url>http://www.eybari.com/attach/1/4535863997.jpg</url>
		<link>http://www.eybari.com/</link>
		<width>250</width>
		<height>333</height>
		<description></description>
		</image>
		<item>
			<title>jQuery</title>
			<link>http://www.eybari.com/entry/jQuery</link>
			<description>jQuery는 55KB js파일로 파일안에 이벤트가 들어있고 jQuery를 호출하여, &lt;BR&gt;코드를 간단하게 작성할 수 있다.&lt;BR&gt;&lt;BR&gt;자바스크립트로 tab메뉴를 만들때, 어떤 식으로 넘길까 고민하던중. &lt;BR&gt;제이쿼리에 대해 알게 되었고, 날코딩을 했다면 5-6줄 길어졌을 코드가 1줄로 깔끔하게 정리되었다.&lt;BR&gt;&lt;BR&gt;제이쿼리의 강력함은 알게되었지만 어떠한 기능이 있는지 자세히 몰라서 &lt;BR&gt;안쓰고 있던 중.. 정리해 두면 좀 쓸껏 같아서 포스팅 한다.&lt;BR&gt;&lt;BR&gt;라고 했으나.. &lt;BR&gt;역시나 정리문서가 있네-_- =&amp;gt; &lt;A href=&quot;http://visualjquery.com/1.1.1.html&quot;&gt;http://visualjquery.com/1.1.1.html&lt;/A&gt;</description>
			<category>2010년까지!</category>
			<author>(eunyoung)</author>
			<guid>http://www.eybari.com/4</guid>
			<comments>http://www.eybari.com/entry/jQuery#entry4comment</comments>
			<pubDate>Fri, 16 May 2008 00:10:55 +0900</pubDate>
		</item>
		<item>
			<title>클로져 함수를 공부해보자!</title>
			<link>http://www.eybari.com/entry/%ED%81%B4%EB%A1%9C%EC%A0%B8-%ED%95%A8%EC%88%98%EB%A5%BC-%EA%B3%B5%EB%B6%80%ED%95%B4%EB%B3%B4%EC%9E%90</link>
			<description>&lt;P&gt;자바스크립트는 내장된 함수의 지역변수를 반환해서 외부에서도 호출할 수 있는 &lt;BR&gt;&lt;STRONG&gt;&quot;클로저&quot;&lt;/STRONG&gt;라는 기능을 갖는다. &lt;BR&gt;&lt;BR&gt;중첩함수와 비슷하나 더 큰 개념이 숨어있고, 함수가 동작하는 데 필요한 데이터 영역이 확장되는 자바스크립트 만의 유연함을 보여주는 대표적인 기능이다.&lt;BR&gt;&lt;BR&gt;예를들면, &lt;/P&gt;
&lt;BLOCKQUOTE&gt;function sayHello2(name) &lt;BR&gt;{&lt;BR&gt;&amp;nbsp; var _hello = &#039;Hello&#039;;&lt;BR&gt;&amp;nbsp; var text =_hello + name;&lt;BR&gt;&amp;nbsp; var sayAlert = function() { alert(text); }&lt;BR&gt;&amp;nbsp; return sayAlert;&lt;BR&gt;}&lt;BR&gt;var say2 = sayHello2(&#039;Jane&#039;);&lt;BR&gt;say2();&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;이 함수는 다른 함수안에 함수를 생성하였기 때문에 클로저를 가진다고 할 수 있다.&lt;BR&gt;&lt;BR&gt;씨언어 같은 경우에는 함수가 호출되어 반환되면 메모리가 해제되기 때문에 &lt;BR&gt;지역변수에 접근 할 수 없는 반면 자바스크립트의 클로저함수는 &lt;BR&gt;함수가 존재할때 처럼 모든 지역변수의 복사본을 유지한다. &lt;BR&gt;또한 꼭 가비지 컬렉션에 의해서 제거 되지 않기 때문에 var _hello = &#039;Hello&#039;; 를 &lt;BR&gt;계속 참조하여 강제적으로 클로저를 해제하는 상태를 만들어줘야한다. &lt;BR&gt;&lt;BR&gt;보통 say2 = null; 을 시켜주면 메모리에서 반환되어 클로저를 해제할 수 있다.&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#ff0000&gt;&lt;STRONG&gt;주의할 점.&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;function leakMemory(){&lt;BR&gt;&amp;nbsp;&amp;nbsp; var el = document.getElementById(&#039;el&#039;);&lt;BR&gt;&amp;nbsp;&amp;nbsp; var o = { &#039;el&#039; : el };&lt;BR&gt;&amp;nbsp;&amp;nbsp; el.o = o;&lt;BR&gt;}&lt;/BLOCKQUOTE&gt;
&lt;P&gt;위의 코드는 el로 식별되는 요소로 접근하기위해 DOM으로 접근한다. &lt;BR&gt;그리고 이것을 매우 간단하게 표현한 함수 리터럴을 사용해서 새로운 객체 참조를 생성하는데 사용한다. 이 객체는 이름 없는 객체를 생성하고, 이 이름없는 객체는 DOM객체를 el이라는 이름의 프로퍼티에 배정한다.&lt;BR&gt;&lt;BR&gt;그리고 나서가 문제다. &lt;BR&gt;자바스크립트 객체와 DOM 객체간의 순환 참조로 인해 클로저가 종료되지 않는 경우가 발생하면, 페이지를 닫아도 할당된 메모리는 해제되지 않는다. &lt;BR&gt;&lt;BR&gt;반복문에서 메모리가 누수된다면 그 양은 엄청나게 불어난다. &lt;BR&gt;따라서, 일반적으로 함수를 내부에 정의하는 것보다, 아래 코드와 같이 작성하는것이 &lt;BR&gt;함수안에서 클래스 지역변수를 사용하여 클로저를 일으키지 않는 방법이다.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;script type =&quot;text/javascript&quot;&amp;gt;&lt;BR&gt;function myObject(){&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;this.startTime&lt;/STRONG&gt; = new Date();&lt;BR&gt;}&lt;BR&gt;myObject.prototype.elapsedTime = function(){&lt;BR&gt;&amp;nbsp;&amp;nbsp; var now = new Date();&lt;BR&gt;&amp;nbsp;&amp;nbsp; var elapsed = now -&lt;STRONG&gt; this.startTime&lt;/STRONG&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp; return elapsed;&lt;BR&gt;}&lt;BR&gt;&amp;nbsp;var obj = new myObject();&lt;BR&gt;function call(){&lt;BR&gt;&amp;nbsp;&amp;nbsp; alert(&quot;객체 나이 : &quot; +obj.elapsedTime());&lt;BR&gt;}&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;&amp;lt;input type = &quot;button&quot; onclick =&quot;call();&quot; value =&quot;호출&quot;&amp;gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;참고사이트 : &lt;A href=&quot;http://jibbering.com/faq/faq_notes/closures.html&quot;&gt;&lt;U&gt;&lt;FONT color=#810081&gt;http://jibbering.com/faq/faq_notes/closures.html&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;A href=&quot;http://www.javascriptkit.com/javatutors/closures.shtml&quot;&gt;&lt;U&gt;&lt;FONT color=#810081&gt;http://www.javascriptkit.com/javatutors/closures.shtml&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;</description>
			<category>2010년까지!</category>
			<author>(eunyoung)</author>
			<guid>http://www.eybari.com/2</guid>
			<comments>http://www.eybari.com/entry/%ED%81%B4%EB%A1%9C%EC%A0%B8-%ED%95%A8%EC%88%98%EB%A5%BC-%EA%B3%B5%EB%B6%80%ED%95%B4%EB%B3%B4%EC%9E%90#entry2comment</comments>
			<pubDate>Wed, 14 May 2008 01:24:56 +0900</pubDate>
		</item>
	</channel>
</rss>
