Javascript ООП - абстракция (например, запрос), инкапсуляция (группировка свойств / методов или сохранение приватности состояния?), Полиморфизм - PullRequest
0 голосов
/ 05 октября 2018

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

Инкапсуляция Есть сообщения, которые говорят "да", потому что они определяют это как группировкувместе свойства и функции.Если это будет определение, я полностью понимаю, почему javascript поддерживает инкапсуляцию.Тем не менее, есть также посты о сохранении конфиденциальности членов.Как я понимаю (я не знаю java), но в Java такова концепция - вы не можете получить доступ к свойствам без методов (так что только методы могут получить к ним доступ), плюс у вас фактически есть ключевые слова 'private / public', чтобы держать вещи закрытыми.

до ES6: это возможно:

  function A (name) {
    var name = name;
    this.getName = function () {
      return name;
    }
  }
  var a = new A("mike");
  a.getName() //accesses name
  a.name //does not --> results in undefined

В es6 это не очень возможно, потому что вам нужно добавить метод доступа к свойству внутри конструктора, что вы не сделаете

  class A {
    constructor(name) {
    var name = name;
      this.getName = () => {
        return name;         // only like this could you have var ... 
      }
    }
  }

Итак, мой вопрос: 1. Что такое инкапсуляция?Речь идет о группировке методов / свойств или о сохранении приватности членов (что было бы невозможно в es6 и до es6 по умолчанию)?

Abstraction"скрывая внутренние детали реализации.только показывать операции, относящиеся к другим объектам "

Я бы, например, представил методы jquery для использования абстракции, и вы не видите их внутреннюю реализацию, просто используйте их.Может ли кто-нибудь объяснить и представить пример того, что представляет собой абстракция, и если javascript действительно использует это?

полиморфизм

"проектирование объектов для обмена поведением ибыть в состоянии переопределить общие поведения с определенными "

  • overriding
  • overloading

Многие сообщения / блоги говорят, что полиморфизм НЕ используется в javascript, но.Перегрузка без аргумента невозможна в JavaScript.Переопределение методов есть ?!У меня может быть родительский класс и дочерний класс, имеющие одну и ту же функцию (одно и то же имя), делающие разные вещи.Это то, что вы понимаете под переопределением?Кроме того, обмен поведением является определенным.возможно, но только по наследству.Есть ли способ поделиться поведением без наследования, но только с использованием полиморфизма?Я вообще не понимаю, что такое полиморфизм после прочтения некоторое время ..

Наследование Наследование является def.поддерживается JS.Я просто хочу дважды проверить классы ES6, чтобы я понял это правильно (у меня нет опыта работы с Java и т. Д.).Разница в том, что js использует прототипное наследование, а не классическое как java и т. Д. Разница в том, что когда я создаю новый объект instance / = из моего класса es6, он связывается со свойствами / методами класса, который я использую для инициализации новых объектов,в то время как в классическом наследовании движок копирует свойства / методы из этого класса.это правильно?Может ли кто-нибудь объяснить, пожалуйста, разницу - в результате - из этой разницы?

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