본문 바로가기

WEB

클로저 클로저(closure)내부함수가 외부함수의 맥락에 접근할 수 있는 것 어떤 함수 안에서만 사용되는 함수를 inner함수로 정의외부에 정의한다면 응집성이 떨어지고 다른 곳에서도 호출 가능하기에 문제점이 발생외부함수 바깥에서는 외부함수의 변수를 접근을 막고 내부함수는 외부함수의 지역번수를 참조할 수 있다. 클로져는 private 변수를 생성할 수 있다. (외부에서 함부로 변경할수 없도록)인자로 받은 변수는 내부함수에서만 쓰이고 직접 변경 할수 없다. (내부 함수를 통해서만 접근 가능) private변수가 필요한 이유소프트웨어가 커지며 많은 사람이 코드에 접근하게 된다. 누구나 변수를 접근하여 변경할 수 있게 된다. 소프트웨어가 망가질 확율이 크다. 클로저 구현시 실수하기 쉬운 상황var arr = []for.. 더보기
bind, apply, call 정리 bind 함수함수가 실행될때 함수를 특정 객체의 스코프 체인에 묶어버리는 기능이다.Function.prototype.bind = function(scope) {var _function = this;return function {return _function.apply(scope, arguments);}}[참고]http://sicheol.tistory.com/9#패턴을 사용하거나 프레임웍 환경에서라면 좀더 직관적인 코딩을 위해 bind메소드가 필요 var Controller = function(){} Controller.prototype = { showMessage: function(){console.log('binding is fantastic');} }; var controller = new Contr.. 더보기
프로퍼티 속성 프로퍼티 이름value : 프로퍼티 값 (접근자 프로퍼티 : get)writable : 프로퍼티 값을 변경할수 있는지 여부 (접근자 프로퍼티 : set)enumerable : 열거 할수 있는지 없는지. ( for/in 루프에서 읽을 수 있는지 여부)(ex - 객체A.x 의enumerable 이 false라면 Object.keys(객체A) x 프로퍼티는 반환 되지 않는다.)configurable : 프로퍼티 속성값을 변경 여부와 프로퍼티 삭제 가능 여부 * 접근자 프로퍼티란?일반적인 프로퍼티 이름 : value를 갖는 형식이 아니라{x: 1.0,y: 10.0,get ratio() {return this.x/this.y},set ratio(value) { this.x *= value this.y += val.. 더보기
Getter와 Setter 프로퍼티 var p = {// 일반 데이터 프로퍼티. x = 1, x 이와 같이 값을 가져오고 값을 셋팅할수 있음.x : 1.0,y : 1.0,// 접근자 프로퍼티. p.r은 get 접근자 메서드가 실행된다.get r() { return Math.sqrt(this.x); },set r(v) { this.x += v; this.y += v; }, // theta는 읽기전용 접근자 프로퍼티.get theta() { return Math.atan2(this.y, this.x); }}; 더보기
jQuery Select 이름으로 찾아 onChange 이벤트 $("select[name=option1_num]").change( function() {var text = $("select[name=option1_num] option:selected").text();text = text.split(":");var price = getNumberOnly(text[1]); $("#df_hosting").text(addNumberComma(price)+"원"); var total = price + getNumberOnly($("#df_option").text()) + getNumberOnly($("#df_price").text());$("#total_price").text(addNumberComma(total)+"원");}); // 문자열에서 숫자만 뽑기function .. 더보기