JavaScript — это объектно-ориентированный язык программирования, который позволяет разработчикам создавать объекты со свойствами и методами. В JavaScript объекты имеют свойства, которые могут быть общедоступными, частными или защищенными. Понимание различий между этими типами свойств необходимо для создания безопасного и эффективного кода.
Общественная собственность
Общедоступные свойства доступны всем, кто имеет доступ к объекту. Они определяются с помощью ключевого слова this
и могут быть доступны вне объекта с помощью записи через точку. Общедоступные свойства обычно используются для хранения информации, которой необходимо поделиться с другими частями кода. Вот пример публичной собственности:
function Person(name) { this.name = name; // Public property } var john = new Person("John"); console.log(john.name); // Output: John
В этом примере мы определили объект Person
с общедоступным свойством name
. Свойство name
доступно вне объекта с помощью записи через точку.
Частная собственность
Частные свойства недоступны вне объекта. Они определяются с помощью ключевых слов let
или const
и могут быть доступны только внутри объекта с помощью замыканий. Частные свойства обычно используются для хранения информации, которая не должна подвергаться воздействию других частей кода. Вот пример частной собственности:
function Person(name, age) { const ageLimit = 18; // Private property let isAdult = age >= ageLimit; // Private property this.name = name; // Public property this.isAdult = function() { return isAdult; } } var john = new Person("John", 25); console.log(john.isAdult()); // Output: true console.log(john.ageLimit); // Output: undefined
В этом примере мы определили объект Person
с частными свойствами ageLimit
и isAdult
. Свойство ageLimit
— это константа, которую нельзя изменить вне объекта. Свойство isAdult
— это логическое значение, которое вычисляется на основе свойства age
, переданного в конструктор. Свойство isAdult
доступно вне объекта с помощью общедоступного метода.
Защищенные свойства
Защищенные свойства доступны только объекту и его потомкам. Они определяются с помощью символа _
в начале имени свойства. Защищенные свойства обычно используются для хранения информации, к которой должны обращаться дочерние объекты. Вот пример защищенного свойства:
function Animal() { this._legs = 4; // Protected property } function Dog() { Animal.call(this); // Inherit Animal properties this.bark = function() { console.log("Woof!"); } } var fido = new Dog(); console.log(fido._legs); // Output: 4
В этом примере мы определили объект Animal
с защищенным свойством _legs
. Объект Dog
наследует свойство _legs
от объекта Animal
с помощью метода call()
. Свойство _legs
доступно внутри объекта Dog
и его потомков, но не вне объекта.
В заключение, понимание различий между общедоступными, частными и защищенными свойствами в JavaScript имеет решающее значение для написания безопасного и эффективного кода. Общедоступные свойства доступны за пределами объекта, частные свойства — нет, а защищенные свойства доступны только объекту и его потомкам. Эффективно используя эти типы свойств, разработчики могут создавать гибкие и безопасные объекты.