Об'єктно-Орієнтоване Програмування (ООП) - один з методів програмування, який розглядає програму як множину «об'єктів», що взаємодіють між собою.
ООП представляє програмне забезпечення як сукупність взаємних об'єктів, а не просто набір команд чи функцій як у традиційному програмуванні.
У JavaScript є багато об'єктів які є вбудовані у ядро, так звані стандартні об'єкти JavaScript наприклад: String, Number, Date і т. д.
Кожен стандартний об'єкт являється екземпляром об'єкта Object, наслідуючи його властивості і методи.
У JavaScript об'єкти це сукупність методів і властивостей.
Властивість об'єкта це зміна яка належить об'єкту і містить значення певного типу даних.
У JavaScript властивості є динамічними, що означає що їх можна додавати і видаляти з об'єкта.
Метод об'єкта це функція яка належить об'єкту і виконує якусь певну дію для об'єкта.
У JavaScript спочатку не було класів але у ECMAScript 6 появилися.
Клас у JavaScript є шаблоном об'єкту і описує його властивості і методи. Описавши class створюють об'єкт за допомогою оператора new.
var ob = new Object();
ob.property="тест";
alert( ob.property );
var ob = Object.create(null, {property:{value:"тест"}});
alert( ob.property );
var ob = {property:"тест"};
alert( ob.property );
function myOb(){
this.property="тест";
}
var ob = new myOb();
alert( ob.property );
class myOb{
constructor(){
this.property="тест";
}
}
var ob = new myOb();
alert( ob.property );
На відмінно від інших мов програмування у JavaScript немає приватних властивостей, тобто властивість яка доступна лишу для об'єкта і не доступна для створеного екземпляра об'єкта.
Якщо все ж таки необхідно приватна властивість то використовуйте зміні:
function myOb(){
var zmina="приватна зміна";
this.property="тест";
this.getZmina=function(){return zmina;}
}
var ob = new myOb();
alert( ob.zmina ); //undefined
alert( ob.getZmina() );
Так само і з методами:
function myOb(){
function f(s){return s.toLowerCase(); }
this.getF=function(){return f("Js");}
}
var ob = new myOb();
// alert( ob.f() ); // f() not found
alert( ob.getF() );