목록javascript (15)
Hello World...
{ name: 'sherlock', address: ' ' // (공백 1문자) } 자바스크립트로 만들어진 위에 객체가 서버로 POST 메서드로 전송되어 저장되었다고 하자. xxx.xx.xx.x?address={주소} get 하고 싶은 경우 스페이스 하나를 넣어도, \0 를 넣어도 겟이 제대로 되지 않는다. URL 인코딩을 해서 넘겨주어야 한다. 그럴 때 encodeURIComponent() 를 사용하면 된다. 공백 문자(\0)는 %20 으로 바뀌어서 들어간다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
Object.create 와 new 가 차이가 없는 줄 알았는데, 사실 큰 차이가 있었다. new Car() 하면 당연히 생성자가 실행이 되고 Object.create(Car.prototype) 을 하면 __proto__ 로 연결만 되는 것 같다. function Car() { this.max = 350; this.auto = true; } Car.prototype.run = function() { console.log('run~~~'); } function ToyCar() { Car.call(this) this.model = "toy"; } ToyCar.prototype = new Car(); ToyCar.prototype.constructor = ToyCar; // ===console==== // C..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bwjxSl/btqASyucOMk/0tubuzuZGlIDPYBpuJbWP1/img.png)
자바스크립트는 자바, C++ 같은 클래스 타입 언어와는 달리 프로타입(prototype) 기반의 언어다. 그래서 별도의 클래스 문법이 없었는데, es6 (ECMA 2015) 버전부터 class 문법이 추가가 되었다. 하지만, 프로토타입에서 클래스타입으로 언어 자체가 바뀐 것이 아니라 문법적으로 지원하는 것이라고 한다. (언어 내부가 클래스 타입으로 재설계 된 것이 아님) 클래스 문법이 없다고는 하지만, 상속과 같은 객체지향 기능들은 사용이 가능하다. es5 function Car(name, speed) { this.name = name; this.speed = speed; } Car.prototype.run = function() { console.log(this.name + ' ' + this.spee..
자바스크립트 객체 참조. 객체 참조 const list = { head: null, tail: null }; let node = { value: 10, next: null }; list.tail = node; >> {value: 10, next: null} list.head = node; >> {value: 10, next: null} list.tail.next = {value: 2, next:null} >> {value: 2, next: null} list.head.next; >> {value: 2, next: null node 는 객체이므로 값 복사가 되는 것이 아니라 참조된다. list.tail 과 list.head 는 동일하게 node 객체를 가리키고 있다.
클로저란, 내부함수가 리턴되어도 외부함수의 변수를 참조할 수 있는 것을 말하는데, 객체가 리턴되어도 객체의 메소드도 외부함수의 변수를 참조할 수 있다. const L = function() { const s = []; const obj = {}; obj.push = function(v) { s.push(v); }; obj.get = function() { return s; }; return obj; }; const tl = L(); console.log(tl); tl.push(1); tl.push(2); console.log(tl.get()); // console // { push: [Function], get: [Function] } // [ 1, 2 ] obj 가 리턴되어도 obj 의 메소드를 이용해..
1. OOP OOP(Object-Oriented Programming) 객체지향은 프로그래밍 패러다임 중 하나로, 사람이 실제로 세계를 보고 이해하는 방식으로 프로그래밍을 하는 것을 말한다. (마치 사물 "thing"을 보는 것처럼) 객체지향 외 절차지향, 함수형 프로그래밍 등 여러 패러다임 존재한다. 객체지향은 절차형 프로그래밍으로는 복잡한 문제를 해결하기가 힘들어졌기 때문에 그 문제를 해결하기 위해 고안 되었다고 한다. 어떤 문제가 있고, 그 문제를 해결하는 과정 중에 프로그래밍 패러다임이 발전한 것이다. 그렇다고 객체지향이 만능이냐 하면 그렇지 않다. 문제를 해결하기 위한 하나의 방법일 뿐으로, 절차지향, 함수형 프로그래밍 등 다양한 방법론이 필요하다. * 중요 키워드 1. 추상화 ㄴ 불필요한 정보..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cSzbrI/btqAKvkBQ0Y/PTkJ8V3kofWipnS4ICXFG1/img.png)
자바스크립트 this 는 정말 헷갈리는 것 중 하나다. 그래도 5가지 패턴을 잘 기억하고 있으면, 공부에 도움이 많이 된다. console.log(this); var fun = function() { console.log(this); } ------------------------ 1. 전역 Global Reference : console.log(this); => window, global 2. 함수 호출 Free Function Invocation : fun(); => window, global 3. call, apply 호출 call or apply Invocation : fun.call(obj); fun.apply(obj) => first arg 4. 생성자 Construction Mode : ne..