2013-09-05 4 views
0

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

var MyMethod = 
{ 
    MyFunction1: function(myData) 
    { 
     /// ... 
     MyFunction2: ([myData]); 
     return "YES"; 
    }, 

    MyFunction2: function(data) 
    { 
     // ... 
     return 'YES'; 
    }, 
}; 

Это правильный способ вызова функции? Функция1 выполняется правильно, но я не могу выполнить вторую функцию для выполнения с этим вызовом. Я пробовал просто иметь его как MyFunction2(myData) и т. Д., Но не повезло.

Я также думал, что, поскольку моя функция настраивается в var, я поставил функцию1 под функцию2, но это тоже не сработало.

Любая идея, что я здесь делаю неправильно?

+1

открытие '' {отсутствует –

+0

спасибо - я это имел в своем коде, но промахнулся, добавив его в том, когда печатая вопрос – benallansmith

+0

@BASmith Небольшой намек на будущие вопросы SO; ** ВСЕГДА ** вставить код в – Phil

ответ

3
var MyMethod = { 
    MyFunction1: function(myData) { 
     MyMethod.MyFunction2([myData]); 
     return 'YES'; 
    }, 
    MyFunction2: function(data) { 
     // whatever ... 
     return 'YES'; 
    } 
}; 

Вы можете также потенциально использовать this.MyFunction2([myData]) однако, выполнение MyFunction1 не может быть гарантировано использовать MyMethod в this, особенно если вы используете call() или apply() в любом месте.

-1
var MyMethod = { 

    MyFunction1: function (myData) { 
     /// ... 
     return this.MyFunction2([myData]); 

    }, 

    MyFunction2: function (data) { 
     // ... 
     return data; 
    }, 
}; 
  • здесь у вас есть объект Mymethod, который имеет Myfunction1 как свою собственность и тому function вы назначили его в качестве своего значения.
  • Так whenevr вы хотите получить доступ к какой-то значение свойства, оно должно быть всегда ниже образом:

MyObject.Property // похож на Mymethod.MyFunction2(param)

Прежде, чем знать синтаксис, я думаю, вы должны знать, что означает объект, свойство и метод:

Объект: Объект - это предмет, который имеет свойства. Свойства имеют имена и значения. Имена всегда являются строками (хотя мы можем писать их без кавычек большую часть времени), а значения могут быть любыми, что поддерживает JavaScript: Numbers, string, booleans, null, undefined или ссылки на объекты.

property: это просто переменная, принадлежащая объекту. Переменная сама по себе не является свойством. Свойства и переменные могут содержать любые данные.

метод: Когда свойство хранит функцию, оно называется методом .

Простейший способ понять это на примере:

var a = { 
    b: function() {some code} 
    }; 

    a //is an object 
    b //is property of a  aka b is a method since it holds a function as its value. 
    function() { //some code}//is property value aka value of b. 
+0

BASmith: обновил мой ответ. Посмотрите, я думаю, что вы не знаете о методах, объектах, свойствах. –

2
var MyMethod ={ 
MyFunction1: function(myData) 
    { 
     /// ... 
     return this.MyFunction2([myData]); 
    }, 

MyFunction2: function(data) 
    { 
     // ... 
     return data; 
    }, 
}; 
var res = MyMethod.MyFunction1('a'); 
alert(res); 
+2

'this' относится к головному объекту (' MyMethod'). – chovy

+0

@chovy необязательно, например 'MyMethod.MyFunction1.call ({}, someData)' – Phil

+0

'var res = MyMethod.MyFunction1.call (MyMethod, 'a')' это снова будет работать –

1

Метод не является глобальным, он является членом объекта, так что вам нужно использовать this для доступа к нему, и двоеточие не является частью идентификатора: Брекеты

this.MyFunction2([myData]); 
Смежные вопросы