2014-01-28 5 views
-1

У меня есть яваскрипт функция, подобной этойвызова Javascript функция из себя

function myFunction(){ 
    // *** WOULD LIKE TO CALL changeColor HERE *** // 
    this.changeColor = function(){ 
    }; 
} 

Как комментарий говорит, что я хотел бы назвать changeColor

Я попытался this.changeColor() и несколько других вариантов но я не могу понять это. Любая помощь будет принята с благодарностью.

+0

Почему changeColor должен находиться внутри myFunction? И что произойдет, если определить changeColor от этого, а затем назвать его? –

+0

Если вызов выполнен в 'myFunction()', тогда вы просто вызываете 'changeColor' – ElliotM

+0

Просто позвоните this.changeColor() после выполнения задания. Кусок пирога. – JLRishe

ответ

-3

Попробуйте назначить его переменной, как это:

function myFunction(){ 
    var changeColor = function(){ 
     changeColor(); 
    }; 
    this.changeColor = changeColor; 
} 
+4

Функция 'changeColor' никогда не кончится! Он вернется в бесконечность :-) – qwertynl

+0

Я думал, что было бы очевидно, что вам нужно будет добавить «если» и сделать его условным. Это пример того, как сделать рекурсию, а не пример того, как реализовать основную проблему, которая не была указана. – Tim

4

Чтобы запустить функцию, просто написать:

function myFunction(){ 
    // referencing to the function 
    changeColor(); 
    function changeColor() { 
    // here would be the code! 
    }; 
} 
-2

Предполагая, что вы пытаетесь сделать объекты:

function myFunction(){ 
    function changeColor(){ 
    }; 
    changeColor(); 
    // *** WOULD LIKE TO CALL changeColor HERE *** // 
    this.changeColor = changeColor; 
} 

Теперь вы можете сделать что-то вроде:

var test = new myFunction(); // calls changeColor 
test.changeColor(); 
0

Вы можете сделать это:

function myFunction(){ 
    this.changeColor = changeColor; 
} 

function changeColor(){ 
    //your code 
} 

для вызова функции вы можете сделать:

var myfunction = new myFunction(); 
myfunction.changeColor(); 
0

Это отчасти зависит от того, что вы могли бы сделать, но это звучит как ключ понимания как «это» работает, и как его охватить. Учитывайте следующее:

function initialClass() { 

    // private members (closures) 
    var _color = "blue"; 
    function privateMethod() { 
     alert(this.color()); 
    } 

    // public members 
    this.color = function (vInput) { 
     if (vInput === undefined) { 
      return _color; 
     } 
     else { 
      _color = vInput; 
      privateMethod.call(this); 
      return; 
     } 
    }; 

    } 

    function partialClass() { 

    // private members (closures) 
    var _size = "large"; 

    // public member 
    this.size = function (vInput) { 
     if (vInput === undefined) { 
      return _size; 
     } 
     else { 
      _size = vInput; 
      return; 
     } 
    }; 

    } 

    var oMyObject = new initialClass(); 
    partialClass.call(oMyObject); 

    oMyObject.color('orange'); 
    oMyObject.size(); 
Смежные вопросы