자바스크립트8 '객체지향 프로그래밍' 기초 자바스크립트는 거의 모든 것이 객체이며 함수 객체로 많은 것을 구현 클래스, 생성자, 메서드함수 객체의 프로토타입 이용각자 따로 함수 객체를 생성할 필요 없이 함수를 이용하여 체인으로 접근클래스 안의 메서드를 정의할 때는 프로토타입 객체에 정의한 후,new로 생성한 객체에서 접근할 수 있게 하는 편이 좋음 Function.prototype.method = function(name, func){ if(!this.prototype[name]) this.prototype[name] = func; } function Person(arg){ this.name = arg; } /*Person.prototype.getName = function(){ return this.name; }*/ Person.method(".. 2016. 10. 31. '클로저에 대해서' 중요한 클로저 이미 생명 주기가 끝난 외부 함수의 변수를 참조하는 함수 클로저를 구현하는 전형적인 패턴 function outerFunc(){ return function(){ // 클로저 시작 //x와 arguments를 활용한 로직 } // 클로저 끝 } var new_func = outerFunc(); // outerFunc 실행 컨텍스트 종료 new_func(); *외부 함수의 호출이 이루어지고, 이 회부 함수에서 새로운 함수가 반환됨 반환된 함수가 클로저이고 이 클로저는 자유 변수를 묶고 있음 반화된 클로저는 새로운 함수로 사용 클로저 활용 우선 클로저는 성능적, 자원적으로 약간 손해를 볼 수 있으므로 제한적으로 사용 정해진 형식의 함수를 콜백해주는 라이브러리가 있을 때, 그 정해진 형식과는 다른 형식.. 2016. 10. 24. 'call(), apply()' 함수와 프로토타입 체이닝 this를 특정 객체에 명시적으로 바인딩 시키는 방법 apply()function.apply(thisArg, argArray)thisArg, 메서드를 호출한 함수 내부에서 사용한 this에 바인딩할 객체argArray, 함수를 호출할 때 넘길 인자들의 배열function Person(name, age){this.name = name;this.age = age;return 100;}var illua = {};Person.apply(illua, ['illua', 50]); call()apply()와 동일하지만 넘겨주는 인자를 각 하나의 인자로 넘기는 차이만 있음Person.call(illua, 'illua', 50); 함수리턴1.일반 함수나 메서드는 리턴값을 지정하지 않을 경우 undefined값 리턴2.생.. 2016. 10. 17. '생성자 함수를 이용한 객체 생성과 this #2' 함수와 프로토타입 체이닝 생성자 함수를 호출할 때 this바인딩new 연산자를 이용한 함수 생성1.빈 객체 생성 및 this바인딩2.this를 통한 프로퍼티 생성3.생성된 객체 리턴default, this로 바인딩된 새로 생성한 객체 리턴 var Person = function (name){if(!(this instanceof Person))return new Person(name);this.name = name ? name : 0;};var illua = new Person('illua');console.log(illua.name); //결과 : illuaconsole.log(Person('illua')); //결과 : illua 함수를 호출할 때 this바인딩자바스크립트에서 함수 내부 코드에서 사용된 this는 전역 객체에 .. 2016. 10. 17. 이전 1 2 다음