자바스크립트2013. 2. 8. 15:47


var msg6 = ""; 

function A(){

    

    var _localX = 7;        // 내부 지역 변수

    

    this._localX = 0;       // 멤버 변수

    

    this.getThisX = function() { return this._localX; };

    this.getX = function() { return _localX; };

    this.setX = function(x){ if(x<10){ 

        _localX = x; 

        }

        return _localX; 

        

    }        

}


var obj6 = new A();

var x = obj6.getX();


msg6 += "\n x = " +  x;

msg6 += "\n obj6._localX = " +  obj6._localX;

msg6 += "\n obj6.getThisX = " +  obj6.getThisX();

msg6 += "\n obj6.setX(8) = " +  obj6.setX(8);

msg6 += "\n obj6.setX(18) = " +  obj6.setX(18);


$('re').innerText = msg6;  


/* 

obj6._localX = 0

obj6.getThisX = 0

obj6.setX(8) = 8

obj6.setX(18) = 8

*/


Posted by 선한열심
자바스크립트2013. 2. 8. 15:26


클로저.html


// 클로저를 호출하면 단순히 객체가 반환되는 것이 아니다.

// 객체와 함께 그것과 연결된 닫힌 공간이 함께 반환되는 것이다. 그리고 닫힌 공간에는 내부 변수가 존재한다 

function outer()

{

    var _x=0;    // // 비공개 멤버

    function _private01(){   // 비공개 멤버

        return ++_x;

    }

    

    function _private02(){     // 비공개 멤버

        return ( _x += 2 );

    }

    

    return { public01:_private01, public02 : _private02 };      // public01, public02 공개멤버

}

Posted by 선한열심
자바스크립트2013. 2. 8. 15:16

자바스크립트 개념 없이 10년 동안 개발 햇다 -.-  기본에 충실하자 


// 함수안의 변수는 함수안에 선언이 있는지 먼저 확인한다 그래서 함수 i는  var i ,alert(i), i=3 ; 

var i=0; 

function T1(){

    alert(i);        // undefined

    var i=3;

    alert(i);    // 3

}

 T1();

 

  

function outer()

    var x=0; 

    return ++x;

var f = outer();  

 alert(f);  // f()하면 오류 발생 


var f = outer; 

 alert(f());  // f() 가능 

 


// 클로저 : 내부 함수를 반환값으로 사용하는 특수한 함수

function outer1()

{

    var x=0;

    return function(){ return++x; };  // 함수 호출 (클로저)

}


var f1 = outer1();

f1();    // 1

f1();      // 2

alert(f1());  // 3

Posted by 선한열심