Я знаю, что здесь много постов, а также много блогов и т. Д. Я не публикую это, потому что мне лень читать другие посты, я, наверное, прочитал около 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 действительно использует это?
полиморфизм
"проектирование объектов для обмена поведением ибыть в состоянии переопределить общие поведения с определенными "
Многие сообщения / блоги говорят, что полиморфизм НЕ используется в javascript, но.Перегрузка без аргумента невозможна в JavaScript.Переопределение методов есть ?!У меня может быть родительский класс и дочерний класс, имеющие одну и ту же функцию (одно и то же имя), делающие разные вещи.Это то, что вы понимаете под переопределением?Кроме того, обмен поведением является определенным.возможно, но только по наследству.Есть ли способ поделиться поведением без наследования, но только с использованием полиморфизма?Я вообще не понимаю, что такое полиморфизм после прочтения некоторое время ..
Наследование Наследование является def.поддерживается JS.Я просто хочу дважды проверить классы ES6, чтобы я понял это правильно (у меня нет опыта работы с Java и т. Д.).Разница в том, что js использует прототипное наследование, а не классическое как java и т. Д. Разница в том, что когда я создаю новый объект instance / = из моего класса es6, он связывается со свойствами / методами класса, который я использую для инициализации новых объектов,в то время как в классическом наследовании движок копирует свойства / методы из этого класса.это правильно?Может ли кто-нибудь объяснить, пожалуйста, разницу - в результате - из этой разницы?