2016-05-15 2 views
0

Что я делаю неправильно, и как можно передавать переменные в другую функцию в пределах одной и той же переменной/функции переноса.Javascript Typedef Ошибка при использовании параметров

Пример:

function customFunctionWrap(){ 
    this.myVar1 = 0;  
    this.getCurrentPosition = function(){ 
     if (navigation.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position){});   
     } 
    }, 

    this.doSomething = function(){ // Works 
     //Do something, return 
     this.callWithParams(); //Works 
    }, 

    //If I remove passing in 'value1',calling it elsewhere works 
    this.doSomethingWithParams = function(value1){ 
     //Use value1 

     //Return 
    }, 

    this.callWithParams = function(){ 
     var value1 = 'xyz';   //Is a variable that changes based on some DOM element values and is a dynamic DOM element 
     this.doSomethingWithParams(value1); //THROWS TYPEDEF ERROR: this.doSomethingWithParams is not a function 
     this.getCurrentPosition(); 
    } 

}; 

    var local = new customFunctionWrap(); 
    local.doSomething();     //WORKS 

Я знаю, что есть еще один способ сделать это, а затем непосредственно использовать customFunctionWrap.callWithParams(), но я пытаюсь понять, почему бывший подход erroring вне.

var customFunctionWrap = { 
    myVar1 : 0, 
    callWithParams : function(){ 

    } 
} 
+0

Это совершенно неправильно. Что именно ты пытаешься сделать? –

+0

Отредактированный вопрос о том, что работает, пока нет аргументов/параметров, переданных в вызове (аргумент), не работает, но call() работает в первом примере. Почему вызов (аргумент) не работает. Не очень ясно, что в IFE это часть, которую я пытаюсь понять правильно. –

ответ

1

Что JS видит:

var customFunctionWrap = (some function)() 

возвращаемые функция срабатывает, потому что последний(), поэтому он должен уступить/вернуть что-то, в противном случае, как и в вашем коде это «возвращение» не определено ,

Так что ваш данный код не работает.

Самый первый починка удалить последние 2 символа из

var customFunctionWrap = (some function)() 

, чтобы сделать его вернуть конструктор.

+0

'if (navigation.geolocation) { navigator.geolocation.getCurrentPosition (функция (позиция) {}); } ' –

+0

Навигационная система и навигатор определены? –

+0

Да, они определены, но я еще не ударил эту часть кода - пока не назвал его. Ошибка, когда я вызываю myFun (параметр), работает, если я просто вызываю myFun() –

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