2012-04-06 7 views
0

질문 : 자바 스크립트에서 개체 이니셜 라이저를 사용하여 folowing과 같은 구조를 만들 수 있습니까? 내가 할 노력은 무엇개체 이니셜 라이저의 로컬 변수

var human = new function (years) { 
    var age = years; 
    Object.defineProperties(this, { 
     age: { 
      enumerable:true, 
      get: function() { 
       return age; 
      }, 
      set: function (value) { 
       if(typeof value != 'number') throw 'Age must be a number'; 
       age = value; 
      } 
     } 
    }); 
} 

:

var years = 0; 
var human = { 
    _age: years, 
    get age() { 
     return this._age; 
    }, 
    set age (value) { 
     if(typeof value != 'number') throw 'Age must be a number'; 
     this._age = value; 
    } 
} 

이 예는 (적어도 나를 위해) "친숙한"더 직관적이지만, 나는 그것이에서와 같이 "_age는"지역의 것을 필요 이전 예.

개체 이니셜 라이저에 로컬 변수를 만들 수 있습니까?

답변

1

다음을 수행 할 수 있습니다

function myObject(){ 
     var privateVar = 'default'; 

     this.setPrivateVar = function(val){ 
     privateVar = val; 
     } 

     this.getPrivateVar= function(){ 
     return privateVar; 
     } 

    } 

var obj = new myObject(); 
alert(obj.privateVar); //undefined 
alert(obj.getPrivateVar()) // default 

또 다른 예 :

function myObject(){ 
     var privatVariable = 'default'; 
     return { 
      getVal : function(){ 
       return privatVariable; 
      } 
     } 
    } 

var obj = myObject(); 
+0

당신의 예는 잘하지만, 내가 객체를 사용하여 순수 자바 스크립트 aproach를 사용하고 싶습니다 aproach 같은 C++의 이니셜 라이저 – micnic

+0

다른 예를 참조하십시오. – Headshota

+0

두 번째 예제가 마음에 들지만 사용하기가 더 쉬운 무언가를 찾고 있습니다.) – micnic

관련 문제