2012-01-17 1 views
1

Я новичок в Javascript, но я много программировал на C#, VB.NET и Java, что эти языки полностью объектно-ориентированы. Кажется, Javascript не может поддерживать все функции OO.Справочник по объектно-ориентированному объекту Javascript

Я ищу объектно-ориентированную ссылку на синтаксис Javascript.

Что она должна включать в

  • синтаксис Наследование
    • вызов родительского конструктора в детском конструкторе
    • Обратитесь к экземпляру родительского объекта
    • множественное наследование (кажется это нормально для JavaScript)
    • Проверка типа наследования
  • Статические/Общие методы
  • Общественные поля
  • Protected/приватные поля (я не уверен, что Javascript есть)
  • Интерфейсы?
+2

Вопрос слишком широк. Прочтите [Pro JavaScript Techniques] (http://www.amazon.com/Pro-JavaScript-Techniques-John-Resig/dp/1590597273) от Джона Ресига. Это покрывает все это. –

+0

На самом деле, мне нужна только ссылка на синтаксис. Например, определение класса - это функция MyClass (значение) {this.value = значение;} '. И наследование - это 'SubClass.prototype .__ proto__ = ParentClass.prototype;' –

ответ

0

Javascript является прототипом языка сценариев. Эти ссылки должны помочь вам начать работу.

Wiki - Prototype base programming

Understanding javascript prototypes

OOP in Javascript

+0

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

+0

Этот нисходящий ничто не было ничем иным. Я downvote все ответы, которые являются просто ссылками на другие сайты. – Phrogz

+1

Даже если это то, о чем просил пускатель нити? – CBusBus

0

Начало работы с Pro Techniques JavaScript Резиг в и "Javascript, хорошие части" Дуглас Crockford.

Do не написать javascript как Java. Они не то же самое.

1

Книги

  • JavaScript: The Good Parts Дуглас Crockfond. Это книга, рекомендованная большинством Javascripters для переполнения стека. Я заметил, что люди перевели свои навыки в java-скрипте с этой книгой. Посетите его сайт: crockford.com для получения дополнительной информации.
  • Stoyan Stefanov, проходит множество тем ООП, таких как объекты, прототип, наследование и некоторые образцы.
  • Pro JavaScript Design Patterns от Ross Harmess и Dustin Diaz обсуждают применение известных шаблонов дизайна в JavaScript.
  • JavaScript Bible: Это включает новую мощную функциональность JavaScript

Видео

На Stack Overflow

Другие

2

Это не то, что Javascript не поддерживает все функции OO. Каждое понятие из классической функции OO может быть реализовано в Javascript, вопросы в том, действительно ли необходимо перенести все эти понятия в него. Имейте в виду, что Javascript - это прототип языка, в большинстве случаев гораздо проще использовать его для вашего же блага, вместо того чтобы пытаться достичь всех возможностей других языков статического типа (хотя это не считается злом).

О темах Вы упомянули:

  • вызов родительского конструктора в детском конструкторе:

    Так как JavaScript является языком прототипа нет родительских классов, только родительские объекты. Если вам нужно вызвать родительский конструктор из объекта-потомка, ваш дизайн может быть неправильным. Родительские объекты могут уже существовать, когда вы создаете из него объект деривации (потомка), поэтому нет необходимости вызывать конструктор снова, это звучит довольно странно даже в теории.

  • Обратитесь к экземпляру родительского объекта:

    AFAIK это не возможно, если вы не создать эталонное свойство на вашем объекте ребенка.

  • Статические/Общие методы:

    Там нет формальной реализации для этого в JavaScript. К каждому методу можно обращаться как статический метод. Смотрите пример:

    Person.sayHello = function(){ 
        alert("Hello!"); 
    } 
    
    Person.sayHello(); 
    new Person.sayHello(); 
    
  • Защищенные/частные поля Там есть блестящее дополнение к ECMAScript 5.1 (см мой второй ссылке для унаследованного частной поддержки членов.). Теперь у вас есть defineProperty метод, код объясняет себя:

    var cat = {}; 
    
    Object.defineProperty(cat, "name", { 
        value: "Maru", 
        writable: false, 
        enumerable: true, 
        configurable: false 
    }); 
    
    Object.defineProperty(cat, "skill", { 
        value: "exploring boxes", 
        writable: true, 
        enumerable: true, 
        configurable: true 
    }); 
    

А вот некоторые ссылки, которые помогли мне много, и некоторые, что я недавно прочитал:

  1. About Classical inheritance in Javascript
  2. Private members in Javascript
  3. Javascript Additions in ECMAScript 5.1
Смежные вопросы