Показать сообщение отдельно
  #1 (permalink)  
Старый 27.06.2011, 23:14
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Свойства/методы класса
Вычитал в книге что есть в 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?

Спасибо, если что-то не так написал, заранее прошу прощения просто хочется все познать что и как

Последний раз редактировалось TicTac, 27.06.2011 в 23:19.
Ответить с цитированием