2014-09-14 7 views
0

Я не уверен, что я делаю это правильно.ссылка функция из другой функция

var pagefunction = function() { 

    anotherfunction(){ 
     alert("it worked"); 
    } 
} 

pagefunction.anotherfunction(); 

В основном я пытаюсь вызвать функцию внутри другой функции, будет ли кто-нибудь сможет посоветовать, что я делаю неправильно?

ответ

2
var pagefunction = { 
    anotherfunction:function(){ 
     alert("it worked"); 
    } 
} 
pagefunction.anotherfunction(); 

Для более подробной информации посетите http://www.sitepoint.com/5-ways-declare-functions-jquery/

+0

+1 (+ больше, если бы мог) Я никогда не думал об этом методе! Отличная работа! – OneHoopyFrood

+0

спасибо, я перегружен ... –

3

Вы можете попробовать это:

var pagefunction = function() { 
    return function(){ 
     alert("it worked"); 
    }; 
}; 

Для вызова:

pagefunction()(); 

ИЛИ:

var fn = pagefunction(); 
fn(); 
+0

+1, потому что это супер аккуратный, но нужно понимать, что методы, используемые здесь (затворы и функциональное программирование) немного трудно обернуть вокруг головы в во-первых, так что не смущайтесь. Просто найдите их в качестве поисковых запросов, и вы их получите. – OneHoopyFrood

1

Чтобы вызвать функцию, вы просто пишете имя функции следуют скобки, с параметрами внутри круглых скобок. После этого вы не ставите { ... }, это для определения функции.

var pagefunction = function() { 
    anotherfunction(); // Call the other function 
    alert("it worked!"); // Alert after the other functioin returns 
} 

Вы называете это как раз:

pagefunction(); 

Для того, чтобы использовать:

pagefunction.anotherfunction(); 

pagefunction должен быть объект, а не функция. Этот объект имеет свойство с именем anotherfunction, которое содержит функцию.

Или, если вы хотите написать:

pagefunction().anotherfunction(); 

pagefunction должен быть функцией, которая возвращает объект, и этот объект будет иметь свойство с именем anotherfunction, который содержит функцию.

2

У вас есть основная синтаксическая ошибка.

Вы звоните anotherfunction, но затем добавляете тело, как будто вы пытаетесь его объявить или что-то в этом роде. Вы не можете этого сделать. Это должно выглядеть так:

var anotherfunction = function() { 
    alert("It Worked!"); 
} 

var pagefunction = function() { 
    anotherfunction(); 
} 

pagefunction(); 
0

Я бы использовал что-то вроде ниже.

var pagefunction = (function() { 
    return new function() { 
     var that = this; 
     that.another = function() { 
      alert("it worked"); 
     }; 
    }; 
})(); 
Смежные вопросы