| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Аргументы
Свойства общие для всего класса должны устанавливаться в прототипе класса. Но
тогда зачем нужен тот кусок кода, который запускается, когда мы создаём
экземпляр? В предыдущих иллюстрациях мы использовали этот блок для установления
значений в экземплярах, но значения эти были постоянные, одни и те же для всех
экземпляров. Но ведь если для всех экземпляров они одинаковы, то, скорее всего,
они принадлежат классу, именно поэтому мы переместили свойство Dog = function( age, hair ) { this.age = age; this.hair = hair; } Dog.prototype.legs = 4; rover = new Dog( 6, "shaggy" ); fido = new Dog( 4, "puffy" ); yeller = new Dog( 12, "gray" ); Здесь есть несколько вещей достойных внимания. Во-первых, отметьте, что имена
аргументов идентичны именам, назначаемым свойствам экземпляра ( Другой немаловажный и почти очевидный факт, это то, что аргументы назначаются
только в соответствии с их расположением и ни с чем другим. Если мы передадим
верхнему классу marylin = new Date(36,22,35); bridgette = new Date(38,23,36); herman = new BlindDate(42,18,37); но когда вы рассматриваете классы: function Date( bust, waist, hips ) { this.bust = bust; this.waist = waist; this.hips = hips; } пока что всё великолепно... function BlindDate( age, IQ, shoeSize ) { // uh ohhh... this.age = age; this.IQ = IQ; this.shoeSize = shoeSize; } ... очевидно, что класс получает только значения и класс же решает, что эти значения означают, простите за каламбур (!). Последнее, о чём стОит упомянуть - тот факт, что при передаче происходит сортировка "по значению". Таким образом, аргументы представляют только значение того, что было передано, а не изначальное имя или объект. Разумеется, если мы передаём объект, как значение, то изменения, произошедшие с ним, будут отражены в объекте. Суть в том, что только значения играют роль. Посмотрите на следующий (не вполне объектно-ориентированный) код: function test(arg1, arg2) { arg1 = "changed"; arg2.prop2 = 6; } arg1 = "original"; arg2 = { prop1:5 } test( arg1, arg2 ); trace( arg1 ); // "original" - не изменился trace( arg2.prop1 +" & "+ arg2.prop2 ); // 5 & 6 - prop2 был добавлен к объекту Функция получает только значение того, что передано, а не исходный объект. Это также относится и к классам и к методам (о последних мы скоро поговорим). Итак, подводя итоги, можно сказать, что экземпляр, вызывающий класс должен проверить класс на предмет того, какие аргументы ему (классу) нужны и в каком порядке. При передаче аргументы сортируются в соответствии с их значением. Аргументов мы коснёмся более детально в дальнейшем, при рассмотрении массива аргументов. Рубрика: Flash
VivaMP - инструмент для OpenMP.
Инструмент для программистов VivaMP предназначен для помощи разработчикам параллельных программ на базе OpenMP. В статье приведен краткий обзор программного продукта.
Подробнее... |
Рубрика: OpenMP
| Добавлено: 05.12.2008
Создаем контекстно-зависимое WPF-приложени....
Подробнее... |
Рубрика: Windows 7
| Добавлено: 05.12.2008
Windows Vista SP2: что внутри и что важно?.
Подробнее... |
Рубрика: Windows Vista
| Добавлено: 05.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|