Вычитал в книге что есть в JavaScript свойства/методы класса, замечу речь идет не о свойствах/методах объекта, а самого класса(конструктора, кому как). Появилось пару вопросов.
Даже есть пример
function Circle(radius) {
this.r = radius;
}
Circle.prototype.area = function( ) { return Circle.PI * this.r * this.r; }
// Cвойство класса
Circle.PI = 3.14159;
// Метод класса
Circle.max = function(a,b) {
if (a.r > b.r) return a;
else return b;
}
var c = new Circle(1.0); // Создание экземпляра класса Circle
c.r = 2.2; // Установка свойства экземпляра r
var a = c.area(); // Вызов метода экземпляра area()
var x = Math.exp(Circle.PI); // Обращение к свойству PI класса для выполнения расчетов
var d = new Circle(1.2); // Создание другого экземпляра класса Circle
var bigger = Circle.max(c,d); // Вызов метода класса max()
речь идет о
// Cвойство класса
Circle.PI = 3.14159;
// Метод класса
Circle.max = function(a,b) {
if (a.r > b.r) return a;
else return b;
}
Вот какие вопросы
1. Зачем нужно создавать свойство класса, метод класса если:
- они просто заменяют переменные, или просто свойста/методы к которым я тоже мог обратится и получить значение/результат работы. То есть я мог записать PI просто в переменную + создать отдельную функцию вместо метода класса и используй не хочу.(только если через свойста/методы, тут конечно это минус так как у каждого объекта своя копия свойств/методов, а так выходит одни свойста/методы класса на все объекты).
- у методов класса нет связи между объектами, и не вызываются от объектов, и не имеют ничего особенного что их отличит от обычной функции, в которую я могу тоже просто передать два нужных мне объекта и ф-ция отработает с тем что мне нужно.
Единственное отличие что я понял, это что они закреплены за конструктором объектом ф-ции, а не валяются где попало, а всегда в конструкторе. И вызываются соостветсвенно через него. + их минус это то что они перезаписываемые, что может нечайно похерить расчеты так как используется одно на всех. Я что-то упустил? Это все так?) В чем же их прелесть чтобы акцентировать на это внимание
2. Это экзотика программирования на JavaScript?
Спасибо, если что-то не так написал, заранее прошу прощения просто хочется все познать что и как