Как создать класс ООП в Javascript - PullRequest
1 голос
/ 22 сентября 2010

Я не решаюсь использовать любой учебник, потому что я знаю, как эти учебники могут оказаться, обучая вас плохим способам делать что-то.Я хочу настроить класс в Javascript, чтобы я мог просто

var vehicle = new Vehicle(el);
var model = vehicle->getModel();

. Эти функции могли бы читать HTML-код и получать элементы на странице и управлять ими.В настоящее время я делаю установку, как ...

var model = function () {
 return {
  getName: function () {

  },
  getVehicleCount: function () {

  },
  incrementCount: function (id) {
   console.log(x);
  }
 }
}();

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

Ответы [ 3 ]

5 голосов
/ 22 сентября 2010

В JavaScript нет такой вещи, как класс, вместо этого все в JavaScript является объектом.

Чтобы создать новый объект, вы определяете функцию, которая использует ключевое слово this (конструктор «function ”), а затем вызовите его с помощью оператора new:

function Foo (id) { // By convention, constructor functions start with a capital letter
    this.id = id;
}

var foo1 = new Foo(1);
var foo2 = new Foo(2);

Однако эти объекты не имеют методов.Чтобы добавить методы, вам нужно определить объект-прототип в их функции конструктора:

Foo.prototype = {
    getId: function () {
        return this.id;
    }
}

Эта новая функция getId будет использоваться всеми Foo объектами.Однако, как было сказано, в JavaScript нет классов, и поэтому есть другие конструкции, которые вы будете использовать для получения других результатов.

Я настоятельно рекомендую видео Дугласа Крокфорда, в которых он объясняет большую частьЯваскрипт ОО природа.С докладами можно ознакомиться здесь:

http://developer.yahoo.com/yui/theater/

Дуглас Крокфорд - Язык программирования JavaScript

Дуглас Крокфорд - Расширенный JavaScript

Это даст вамбазовое понимание структуры JavaScript и должно помочь переход от классического к функциональному программированию.

1 голос
/ 10 мая 2013

Хотя в JavaScript нет классов, вы можете создавать функции конструктора. Функция конструктора работает путем привязки методов к прототипу объекта. Есть несколько способов сделать это, каждый из которых имеет свои преимущества и недостатки. Я лично предпочитаю самый прямой путь, который работает путем добавления методов к «этому»:

var Constructor = function() {

  //object properties can be declared directly
  this.property = "value";

  //to add a method simply use dot notation to assign an anonymous function to an object
  //property
  this.method = function () {
    //some code
  }

  //you can even add private functions here. This function will only be visible to this object methods
  function private() {
    //some code
  }
  //use return this at the end to allow chaining like in var object = new Constructor().method();
  return this; 

}
0 голосов
/ 22 сентября 2010

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

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