Свойства/методы класса
Вычитал в книге что есть в 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? Спасибо, если что-то не так написал, заранее прошу прощения просто хочется все познать что и как:) |
Это упрощенная версия создания статических свойств\методов. Google this.
|
да не густо:)
я такое еще видел в функцию записывали так значение тоже для эмуляции стат. свойства. Тут в конструктор. |
Достоинство таких свойств и методов, в том, что они логически связаны с классом
|
класс используется как пространство имён, чтобы не гадить куда попало
|
спасибо
|
Часовой пояс GMT +3, время: 22:03. |