Различия в объявлениях функций в функции конструктора Javascript - PullRequest
4 голосов
/ 11 мая 2011

Меня смущают различные способы объявления функций внутри функции конструктора.

function ClassName() {
 this.one = function() {};
 var two = function() {};  
 three = function() {};
}

Я знаю, один является общедоступным и может вызываться извне, а two является частным. Какова семантика для три ?

Ответы [ 3 ]

1 голос
/ 11 мая 2011

Это первый формат

, который ближе к статическим методам в других языках программирования.

var ClassName = {  
    one: function() {},
    two: function() {},
    three: function() {} 
} 

ex:

  ClassName.one();

, а другой:

function ClassName(){  
    this.one = function() {};
    this.two = function() {};
    this.three = function() {}; 
} 

здесь вы можете сделать:

var obj = new ClassName();
obj.one();

В этом случае вам необходимо создать экземпляр объекта перед использованием методов.

Это два способаклассы в javascript ... что я знаю.

1 голос
/ 11 мая 2011

Это те, которые вы можете использовать в функции конструктора:

function ClassName() {

  // A function assigned to a property
  this.one = function() {};

  // A function assigned to a local variable
  var two = function() {};

  // A function declared locally
  function three() {}

}

Только первый из них становится членом объекта.

Это те, которые выможно использовать в объектном литерале:

var objectName = {

  // A function assigned to a property
  one: function() {}

};
1 голос
/ 11 мая 2011

Пример, который вы предоставили, будет синтаксической ошибкой, так как вам нужно использовать = для назначения в этом контексте.

three, если использовать с правильным оператором назначения, будет глобальной функциейэто будет существовать вне этой области.Когда вы опускаете ключевое слово var, переменной присваивается свойство глобального объекта, которое в браузере равно window.

jsFiddle .

Когдаиспользуя var, они становятся свойствами VariableObject в контексте выполнения.Вы используете их как обычные переменные.

Дальнейшее чтение .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...