Есть ли способ, которым Javascript может имитировать объектно-ориентированный язык? - PullRequest
4 голосов
/ 12 мая 2011

Мне интересно, есть ли способ, которым Javascript может имитировать объектно-ориентированный язык.Т.е. вы можете имитировать возможность определять настроенные классы / объекты со свойствами?Поскольку JSON - это, по сути, способ передачи объектов javascript, я считаю, что должен быть какой-то способ создания / хранения объектов на стороне клиента, а затем их повторного использования?Если кто-то может указать мне хороший учебник (если это возможно сделать вообще), это будет очень цениться.

Даже какой-нибудь пример кода, в котором вы можете динамически создавать объект, тогда использовать его с помощью jquery будетоценили.

Ответы [ 8 ]

5 голосов
/ 12 мая 2011

Javascript - это объектно-ориентированный язык, это просто не объектная система на основе классов, а основанная на прототипах.Смотрите эту статью: http://en.wikipedia.org/wiki/Prototype-based_programming

4 голосов
/ 12 мая 2011

Мне показалось, что это отличный учебник: https://developer.mozilla.org/en/Introduction_to_Object-Oriented_JavaScript

Надо сказать, что Javascript ориентирован на объекты, однако он основан на прототипах, а не на классах.

2 голосов
/ 12 мая 2011

Дуглас Крокфорд - признанный человек в сообществе JavaScript,

Его разговоры о JS действительно хороши. В этой серии он рассказывает о продвинутых js, включая объектно-ориентированный JavaScript.

http://video.yahoo.com/video/play?vid=111585 http://video.yahoo.com/video/play?vid=111586 http://video.yahoo.com/video/play?vid=111587

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

JavaScript является объектно-ориентированным.Просто на основе прототипа , а не на основе класса.

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

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

Краткий ответ - «да».На developer.mozilla.org есть пара отличных статей:

0 голосов
/ 12 февраля 2012

Хотя Javascript не имеет встроенной системы классов (хотя следующая версия Javascript может включать это), существует множество различных шаблонов проектирования OO Javascript, которые имитируют поведение классов. Шаблон модуля имитирует классы, позволяя объекту Javascript содержать как закрытые, так и открытые члены. Это достигается так:

var Person = function() {
    var firstName = "Greg";
    var lastName = "Franko";
    return {
        getFirstName: function() {
            return firstName;
        },
        getLastName: function() {
            return lastName;
        }
    }        
}

//Instantiate a new Person object
var greg = new Person();

//This will not work because the firstName property is private
console.log(greg.firstName);

//This will work because the getFirstName method is public
console.log(greg.getFirstName());
0 голосов
/ 29 января 2012

Если вы предпочитаете настоящую книгу, это было очень полезно для меня: Pro Javascript Design Patterns

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