{"data":{"site":{"siteMetadata":{"title":"lastrites2018","author":"lastrites2018","siteUrl":"https://lastrites2018.netlify.com","comment":{"disqusShortName":"","utterances":"lastrites2018/gatsby-first-blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"80e66915-7bd8-5d8d-a009-24d40f2dbdd2","excerpt":"checkpoint 09 checkpoint 10 npm package.json -> 디펜던시(dependencies, 종속된 패키지) 설정, 스크립트등을 기술해줌 npm -> node package manager npm install -> 디펜던시를 까는 것(node_modules가 없는 이상 해줘야 함) 자바스크립트의 부모는 Object, : assign이 안 되고, 크롬 전용 기능 http://unikys.tistory.com/320 beforeEach? 스펙spec…","html":"<h2 id=\"checkpoint-09\"><a href=\"#checkpoint-09\" aria-label=\"checkpoint 09 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>checkpoint 09</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token number\">1.</span> primitive type이기 때문에 reference 가 바뀌는게 아님\n<span class=\"token number\">2.</span> x의 주소값이 들어가기 때문에<span class=\"token punctuation\">,</span> 변경됨\n<span class=\"token number\">3.</span> y <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// y는 더 이상 x의 주소를 가리키지 않고 2라는 값으로 채워집니다</span>\n<span class=\"token number\">4.</span> outArray는 더 이상 myArray를 가리키지 않고<span class=\"token punctuation\">,</span> 연결고리가 끊어지는 <span class=\"token function\">것</span><span class=\"token punctuation\">(</span>레퍼런스가 끊어지는 것<span class=\"token punctuation\">)</span>\n새로 assign을 하는 것 <span class=\"token punctuation\">:</span> 연결고리가 끊어지는 것\n<span class=\"token number\">5.</span> outArray<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">25</span> <span class=\"token comment\">// ourArray[2]는 myArray[2]를 참조합니다</span>\n\n<span class=\"token number\">6.</span> arr <span class=\"token comment\">// 새로 배열을 만든거나 다름 없음 : var arr = myArray; 즉 레퍼런스를 카피한 것.</span>\narr<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span><span class=\"token number\">25</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// arr[2]는 myArray[2]를 참조합니다.</span>\n\n<span class=\"token number\">7.</span> <span class=\"token keyword\">var</span> myArray <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">doStuff</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  arr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span><span class=\"token comment\">// arr는 myArray를 가리키지 않고 새 배열 []을 참조합니다.</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token function\">doStuff</span><span class=\"token punctuation\">(</span>myArray<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\ncall by sharing이라고 하나<span class=\"token punctuation\">,</span> 좋은 용어인지는 모르겠음<span class=\"token punctuation\">.</span> copy by reference 선호함<span class=\"token punctuation\">.</span>\n다들 많이 틀림<span class=\"token punctuation\">.</span> myArray를 덮어 씌우는게 아님<span class=\"token punctuation\">.</span> 끊는 거임<span class=\"token punctuation\">.</span>\n\n<span class=\"token number\">8.</span> <span class=\"token keyword\">var</span> player <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> score<span class=\"token punctuation\">:</span> <span class=\"token number\">3</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">doStuff</span><span class=\"token punctuation\">(</span>obj<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">// var obj = player;</span>\n  obj<span class=\"token punctuation\">.</span>score <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//obj.score는 palyer.score를 참조합니다/</span>\n  obj <span class=\"token operator\">=</span> undefined<span class=\"token punctuation\">;</span> <span class=\"token comment\">// obj는 더 이상 player를 참조하지 않고 undefined란 값으로 채워짐</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token function\">doStuff</span><span class=\"token punctuation\">(</span>player<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token number\">9.</span>\n<span class=\"token keyword\">var</span> player <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> score<span class=\"token punctuation\">:</span> <span class=\"token number\">3</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">doStuff</span><span class=\"token punctuation\">(</span>obj<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  obj <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\nplayer <span class=\"token operator\">=</span> <span class=\"token function\">doStuff</span><span class=\"token punctuation\">(</span>player<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token operator\">&lt;</span><span class=\"token operator\">-</span> 왼쪽으로 향한 화살표가 리턴 표시<span class=\"token punctuation\">.</span> player가 undefined로 assign 된 것<span class=\"token punctuation\">.</span>\ndoStuff는 아무 것도 리턴하지 않음<span class=\"token punctuation\">.</span>\n\n<span class=\"token number\">10.</span>\n<span class=\"token keyword\">var</span> obj <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n  inner<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span> x<span class=\"token punctuation\">:</span> <span class=\"token number\">10</span> <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">var</span> example <span class=\"token operator\">=</span> obj<span class=\"token punctuation\">.</span>inner<span class=\"token punctuation\">;</span>\nobj<span class=\"token punctuation\">.</span>inner   <span class=\"token operator\">=</span> undefined<span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// 중첩된 object 혹은 array는 한 메모리 영역을 차지하는 것이 아닌 각각의 공간을 차지합니다.</span>\n<span class=\"token comment\">// obj의 공간과, { x: 10}의 공간은 다릅니다</span>\n<span class=\"token comment\">// example은 {x:10}의 메모리 주소를 차지합니다. 이미 메모리 주소가 연결됐고, 끊어지는 건 아님.</span></code></pre></div>\n<h2 id=\"checkpoint-10\"><a href=\"#checkpoint-10\" aria-label=\"checkpoint 10 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>checkpoint 10</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token number\">2.</span> result는 value를 카피 했기 때문에 result는 변동이 <span class=\"token function\">없다</span><span class=\"token punctuation\">(</span>primitive type<span class=\"token punctuation\">)</span>\n<span class=\"token number\">3.</span>\n<span class=\"token number\">4.</span> func는 함수가 들어가고 g는 실행<span class=\"token punctuation\">,</span> h는 <span class=\"token number\">11</span>이 들어감\nobj<span class=\"token punctuation\">.</span>func는 <span class=\"token number\">12</span>가 됐지만<span class=\"token punctuation\">,</span> obj<span class=\"token punctuation\">.</span>g는 그것과 관계가 없다<span class=\"token operator\">!</span>\n<span class=\"token number\">5.</span>\n<span class=\"token keyword\">var</span> x <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">f</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  x <span class=\"token operator\">=</span> x <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">return</span> x<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token number\">5.</span>\n<span class=\"token function\">f</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 11</span>\n<span class=\"token function\">setTimeout</span><span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">,</span> <span class=\"token number\">1000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 비동기 영역으로 넘어감, 보통 동기영역이 다 끝나면 실행되고 하나의 스코프가 끝나고 실행된다고 봄. 동기영역이 다 끝나고 콜백이 넘어옴.</span>\n<span class=\"token function\">f</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 12</span>\n<span class=\"token keyword\">var</span> result <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span> <span class=\"token comment\">// 12</span>\n\n<span class=\"token number\">6.</span> <span class=\"token function\">setTimeout</span><span class=\"token punctuation\">(</span><span class=\"token number\">12</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1000</span><span class=\"token punctuation\">)</span>이나 다를바가 없기 때문에 경우에 따라 에러\ngithub에서 막아놓은 모양\n\n<span class=\"token number\">8.</span> 정의만 됐지 값이 할당된 적은 없기 때문에 에러<span class=\"token punctuation\">.</span>\n<span class=\"token comment\">// 타입 에러가 나옴</span></code></pre></div>\n<h2 id=\"npm\"><a href=\"#npm\" aria-label=\"npm permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>npm</h2>\n<p>package.json -> 디펜던시(dependencies, 종속된 패키지) 설정, 스크립트등을 기술해줌</p>\n<p>npm -> node package manager</p>\n<p>npm install -> 디펜던시를 까는 것(node_modules가 없는 이상 해줘야 함)</p>\n<p>자바스크립트의 부모는 Object,</p>\n<p><code class=\"language-text\">__proto__</code>: assign이 안 되고, 크롬 전용 기능</p>\n<p><a href=\"http://unikys.tistory.com/320\">http://unikys.tistory.com/320</a></p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">Student<span class=\"token punctuation\">.</span>prototype <span class=\"token operator\">=</span> Object<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>Human<span class=\"token punctuation\">.</span>prototype<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nStudent<span class=\"token punctuation\">.</span>prototype<span class=\"token punctuation\">.</span>constructor <span class=\"token operator\">=</span> Student<span class=\"token punctuation\">;</span> <span class=\"token comment\">//굳이 이렇게 추가로 설정해줘야 함.</span>\nStudent<span class=\"token punctuation\">.</span>prototype<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">learn</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\nHuman<span class=\"token punctuation\">.</span><span class=\"token function\">call</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">,</span> name<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// Human.apply(this, arguments)</span>\n<span class=\"token operator\">-</span><span class=\"token operator\">></span>Es6에서 해결\n\nSubclassing 꼭 읽어야 함<span class=\"token punctuation\">.</span>\n\n<span class=\"token keyword\">super</span>는 부모의 <span class=\"token keyword\">this</span>를 가리킴</code></pre></div>\n<h2 id=\"beforeeach\"><a href=\"#beforeeach\" aria-label=\"beforeeach permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>beforeEach?</h2>\n<p>스펙spec 테스트에서 beforeEach 항목은 테스트를 실행하기 전에 꼭 한번 실행하라라는 뜻임.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token function\">beforeEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  grub <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Grub</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>클래스에선 리턴을 해주지 않아야 인스턴스를 받아올 수 있기 때문에 슈도클래시컬 한 방법에서는 리턴을 써주지 않음.</p>\n<p>리턴 키워드를 컨스트럭터(클래스 만들어주는 생성자한테는 쓰지 않음.)</p>\n<p>var bee = new Bee();</p>\n<p>this == bee`</p>","frontmatter":{"title":"Immersive Sprint - SubClass Dance Party","date":"September 27, 2018"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"/til/20180927 IM08D07, 20180928 IM08D08 SubClass Dance Party/","previous":{"fields":{"slug":"/til/20180925 Instantiation Patterns/"},"frontmatter":{"title":"Instantiation Patterns","category":"TIL"}},"next":{"fields":{"slug":"/til/20180928 IM08D09, 20181001 IM08D10 N-Queens/"},"frontmatter":{"title":"Immersive Sprint - N-Queens","category":"TIL"}}}}