호다닥

Day 8. protoype 본문

바닐라코딩

Day 8. protoype

3jun 2018. 6. 7. 21:42

function, string 등 기본적인 property에 prototype 메소드를 사용하면 다른 사람들에게 혼란을 줄 수 있으므로 사용하지 않는 것이 좋다. 


일반적으로 공백은 space로 입력하는 것이 좋다. tap은 사용자의 컴퓨터에 따라 띄어쓰기의 정도가 다를 수 있기 때문이다. 


그 어떤 함수식보다 new가 가장 강력하기 때문에 다른 함수식을 신경쓰지 않아도 크게 상관은 없다. 

 빈 객체를 this로 하고, this.age를 호출하기 때문에 undefined가 뜬다. 



menu UI 과제에서 mouseenter 이벤트와 mouseover 이벤트 : 비슷하게 생겼지만 완전히 다른 기능을 하기 때문에 한번 찾아볼 것.


자바스크립트의 모든 함수는 객체이다. 따라서 생성자 함수는 객체이다. 

객체는 Key/Value를 가질 수 있습니다.  (속성/값)


생성자 함수냐 아니냐는 단지 그 쓰임새에 달린 문제이다. 



생성자 함수가 생성되면 자동으로 prototype이 만들어지고, 생성자 함수가 생성되는 변수가 instance가 된다.

ex)        var obj = new Object();

Object는 생성자 함수, obj는 instance이다.




++ Prototype Chain

instance에 없는 속성이라면 instance.protoype에서 가져온다. 

위 예시에서 obj instance는 constructor 속성이 없지만 obj.protoype에서 constructor 속성을 가져온다. 


이런 일련의 과정을 prototype chain 이라고 한다. 


Dunder Proto

__proto__ : 언더바가 2개


instance의 prototype을 가리키는 속성이다.


prototype은 객체다. constructot 속성을 가진..


protoype이라는 객체에 method가 있는 것이다.

ex) Array.prototype.push() 와 같이 MDN 등에서 method를 표현할 때 prototype이 있는 이유.


만약 객체의 prototype에 없는 method라면 prototype의 prototype에서 method를 찾아온다. 


Object의 최상단에는 null이 있다.

Object.prototype.__proto__


++ instance.__proto__ === Object.protoype


자바스크립트에서는 상속이 없다. behavior delegation이다. 











'바닐라코딩' 카테고리의 다른 글

Day 11. Event Loop  (0) 2018.06.14
Day 9,10. Server/Client/HTTP, AJAX  (0) 2018.06.14
Day7. this, prototype  (0) 2018.06.05
Day 6. Closure  (0) 2018.06.02
Day 5. argument / scope / hoisting / closure  (0) 2018.05.31
Comments