2015-10-12 3 views
0

Как получить доступ к приватным переменным с помощью общей публичной функции внутри конструктора.Как получить доступ к приватным переменным с использованием общей публичной функции внутри конструктора

function construct(){ 

    var priValue1 = 0; 
    var priValue2 = 0; 
    var priValue3 = 0;  

    this.getvalue = function(_input){ 
     return this[_input]; 
    } 

} 

construct.prototype.init = function(){ 
    if(this.getvalue("priValue1")){ 
     console.log("Value 1") 
    } 
} 

var nc = new construct(); 
nc.init(); 

Не удалось получить доступ к закрытой переменной.

+1

'вернуть _input' вместо' вернуть это [_INPUT] ' –

+0

http://jsfiddle.net/sandenay/0ac78v7d/ –

+0

@ SandeepNayak Я не думаю, что это сработает. Это просто вернет аргумент. Я думаю, они хотят получить доступ к объявленным переменным. –

ответ

4

Вы можете сохранить свои частные переменные в объекте и получить к ним доступ по имени свойства.

function construct(){ 
 
    var priVars = { 
 
     priValue1: 0, 
 
     priValue2: 0, 
 
     priValue3: 0 
 
    }; 
 

 
    this.getvalue = function(_input){ 
 
     return priVars[_input]; 
 
    } 
 

 
} 
 

 
construct.prototype.init = function(){ 
 
    if(this.getvalue("priValue1")){ 
 
     console.log("Value 1") 
 
    } 
 
} 
 

 
var nc = new construct(); 
 
nc.init();

0

Когда вы объявляете «частный вар» это не хранится на this, переменная является доступным в качестве переменной области действия. Используя свой собственный код, который я хотел бы написать

this.getvalue = function(_input){ 
    return eval(_input); 
} 

, чтобы получить значение динамически

+0

Eww ... Если 'eval' - это ответ, вопрос неправильный. –

+0

Возможно, вопрос неправильный, потому что у вас нет частных переменных на javascript;) Использование объекта тоже очень хорошо! – sminutoli

Смежные вопросы