2013-08-16 3 views
3

У меня есть код, как показано ниже.Частная функция, не возвращающая значение

var Main = function() { 
    var a, b, c, d; 
    a = 1; 
    b = true; 
    c = undefined; 

    var _private = function() { 
     return 'Function with Private acceess'; 
    }; 

    this.getPublic = function() { 
     return 'Function with Public access'; 
    }; 

    this.getPrivate = function() { 
     _private(); 
    }; 

}; 

var o = new Main(); 
console.log(o.getPublic()); 
console.log(o.getPrivate()); 

В коде выше я пытаюсь получить доступ к закрытому методу Main объекта o через общедоступный метод getPrivate(). Но в консоли результат

undefined 

Почему _private не возвращает нужное значение?

+3

'_private()' делает все возможное, чтобы вернуть значение, но 'getPrivate()' не ретранслирует его к своему вызывающему , –

+0

Разве это не относится к вопросу о типовых вопросах? – Esailija

+0

@Esailija, не уверен. Тем не менее, все еще думая. –

ответ

7

Вы забыли заявление return. Попробуйте следующее:

this.getPrivate = function() { 
    return _private(); 
}; 

Если значение явно не возвращается из функции Javascript, функция считается возвращать undefined; предупреждение не будет выдано.

2

Вы забыли «вернуть» значение.

this.getPrivate = function() { 
    return _private(); 
}; 
0

изменение как этот return _private();

2

Oops..you забыл вернуть значение ... попробуйте это

var Main = function() { 
    var a, b, c, d; 
    a = 1; 
    b = true; 
    c = undefined; 

    var _private = function() { 
     return 'Function with Private acceess'; 
    }; 

    this.getPublic = function() { 
     return 'Function with Public access'; 
    }; 

    this.getPrivate = function() { 
     return _private(); 
    }; 

}; 

var o = new Main(); 
console.log(o.getPublic()); 
console.log(o.getPrivate()); 
Смежные вопросы