Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ООП в JavaScript (https://javascript.ru/forum/misc/38931-oop-v-javascript.html)

DangerMan 08.06.2013 19:36

ООП в JavaScript
 
Изучаю JS по вашему курсу http://learn.javascript.ru/ (спасибо, замечательный курс), но тем не менее остаются вопросы

Какая разница между
var Foo = {
  name: 'Vasya',
  func: function() {
    doSomething();
  }
}

и
function Foo() {
  this.name = 'Vasya';
  this.func = function() {
    doSomething();
  }
}
var FooObj = new Foo();



Также не очень понял про члены объектов:
function Foo() {
  var name = ''; // 1
  name = ''; // 2
  this.name = ''; // 3
}

Чем они отличаются, и как писать в промышленном коде?

danik.js 08.06.2013 20:34

В первом случае ты создаешь объект. Во втором - конструктор объектов.
К слову функцию и статичные свойства нужно вынести в прототип. И имена объектов нужно писать с маленькой буквы, а с большой - только конструкторы.
Разница примерно такая. Если тебе нужен один предмет, скажем стул - ты берешь и делаешь его. Если тебе нужно много стульев, то ты делаешь станок (конструктор) и с легкостью создаешь столько стульев сколько хочешь.

В js при доступе к свойству объекта нужно указывать ключевое слово this обязательно.
А var name - это объявление локальной переменной.

DangerMan 08.06.2013 20:48

Спасибо за ответ, я еще не дошел до прототипов.
Можно поподробнее про статичные/нестатичные функции и свойства?


Часовой пояс GMT +3, время: 01:09.