2010-09-22 3 views
1

Я не решаюсь использовать только какой-либо учебник, потому что я знаю, как эти учебники могут оказаться, обучая вас плохим способам делать что-то. Я хочу, чтобы настроить класс в Javascript, так что я могу просто сделатьКак создать класс ООП в 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 ... Я хотел бы быть в состоянии передать классу узел для элемента всех метод будет но я не уверен, что я делаю это правильно ...

+1

Есть классы в js? – delnan

+1

Дельнан делает важный момент. Javascript - бесклассовый язык OO. –

ответ

5

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

Чтобы создать новый объект, определить функцию, которая использует this ключевое слово в нем (а «конструктор функции»), а затем вызвать его с 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 нет классов, и как таковые существуют другие конструкции, которые вы будете использовать для получения разных результатов.

Я настоятельно рекомендую видео от Douglas Crockford, в котором он объясняет большую часть природы JavaScript с использованием javascript. Переговоры можно найти здесь:

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

Douglas Крокфорд - The JavaScript Язык программирования

Douglas Крокфорд - Расширенный JavaScript

Те даст вам общее представление о структуре яваскрипт и должны помогают перейти от классического к функциональному программированию.

0

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

1

Хотя в 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; 

}