к банкам данных Интернет   к оглавлению   к алгоритмизации и языкам   к высокоуровневым языкам   к визуальным средам

Объектная модель JavaScript

JavaScript основан на простом объектно-ориентированном примере. Объект - это конструкция со свойствоми, которые являются переменными JavaScript. Свойства могут быть другими объектами. Функции, связанные с объектом известны как методы объекта.

В дополнение к объектам, которые сформированы в Navigator client и LiveWire server, вы можете определять ваши собственные объекты.

Объекты и Свойства

Объект JavaScript имеет свойства ассоциированные с ним. Вы обращаетесь к свойствам объекта следующей простой системой обозначений:

  
objectName.propertyName
 

И имя объекта и имя свойства чувствительны к регистру. Вы определяете свойства, приписывая значение. Например, пусть существует объект, с именем myCar (мы обсудим, как создавать объекты позже - теперь, только принимаем, что объект уже существует). Вы можете дать свойства, именованные make , model , и year следующим образом:

  
myCar.make = "Ford"
myCar.model = "Mustang"
myCar.year = 69;
 

Вы можете также обратиться к этим свойствам, используя систему обозначений таблицы следующим образом:

  
mycar["make"] = "Ford
myCar["model"] = "Mustang"
myCar["year"] = 69;
 

Этот тип таблицы известен как ассоциативная таблица, потому что каждый элемент индекса также связан со значением строки. Чтобы пояснять, как это делается, следующая функция показывает свойство объекта, когда вы проходите объект и имя объекта как аргументы функции:

Так, обращение к функции show_props(myCar, "myCar") возвращает следующее:

myCar.make = Ford
myCar.model = Mustang
myCar.year = 67

Вы можете также определять свойства, используя порядковые числа, например:

  
temp[0] = 34
temp[1] = 42
temp[2] = 56
 
Эти утверждения создают три свойства объекта temp, и вы должны обращаться к этим свойствам как temp[i], где i - целое число между 0 и 2.

Функции и Методы

Функции - один из фундаментальных встроенных блоков в JavaScript. Функция - JavaScript процедура - набор утверждений, которые выполняют определенную задачу.

Определение функции состоит из ключевого слова function , сопровождаемого

Вы можете использовать любые функции, определенные в текущей странице. Лучше всего определять все ваши функции в HEAD страницы. Когда пользователь загружает страницу, сначала загружаются функции.

Утверждения в функциях могут включать другие обращения к функции.

Например, есть функция с именем pretty_print:

function pretty_print(string) { document.write(" " + string) }

Эта функция принимает строку как аргумент, прибавляет некоторые теге HTML, используя оператор суммы (+), затем показывает результат в текущем документу.

Определение функции не выполняет ее. Для этого вы должны вызвать функцию, чтобы выполнить ее. Например, вы можете вызывать функцию pretty_print следующим образом:

<SCRIPT> pretty_print("This is some text to display") </SCRIPT>

Аргументы функции не ограничены только строками и числами.

Аргументы функции сохраняются в таблице. Внутри функции, вы можете адресовать параметры следующим образом:

  
functionName.arguments [i]
 
Где functionName - имя функции, и i - порядковое число аргумента, начинающегося с нуля. Так, первый аргумент в функции, с именем myfunc, будет myfunc.arguments [0]. Общее число аргументов обозначено переменным arguments.length.

Функция может даже быть рекурсивной, то есть она может вызывать себя. Например, существует функция, которая вычисляет факториалы:

  
function factorial(n) {
  if ((n == 0) || (n == 1))
    return 1
  else {
    result = (n * factorial(n-1) )
    return result
  }
}
 

Вы можете показывать факториалы от одного до пять следующим образом:

  
for (x = 0; x < 5; x++) {
   document.write(x, " factorial is ", factorial(x))
   document.write("
")
} 

Результаты будут бы следующие:
факториал нуля - 1
факториал единицы- 1
факториал двойки - 2
факториал тройки - 6
факториал четверки - 24
факториала пятерки - 120

Функции с Переменными Числовыми Аргументами

Вы можете вызывать, функция с большим количеством аргументов чем она формально объявлена, используя массив arguments . Это часто полезно тогда, когда вы не знаете заранее, сколько аргументов будут в функции. Вы можете использовать arguments.length, чтобы определить число аргументов в функции, и затем обращаться к каждому аргументу, используя массив arguments .

Например, рассмотрим функцию, определенную, чтобы создать списки HTML. Единственый формальный аргумент функции - строка, которая является "U", если список неупорядочен или "O", если список упорядочен (пронумерован). Функция определена следующим образом:

function list(type) { document.write("<" + type + "L") //начинается список for (var i = 1; i < list.arguments.length; i++) // Повторить через аргументы document.write("" + list.arguments[i]) document.write("</" + type + "L") // заканчивается список }

Вы можете проходить любое число аргументов этой функции, и затем показывать каждый аргумент как каждый отдельный пункт в обозначенном типе списка. Например, следующий запрос на функцию:

  
list("o", "one", 1967, "three", "etc, et 
  1. one
  2. 1967
  3. three
  4. etc, etc ...

Определение Методов

Метод - функция, связанная с объектом. Вы определяете метод таким же образом, так как вы определяете стандартную функцию. Затем, используйте следующий синтаксис, чтобы связать функцию с существующим бъектом:

 object.methodname = function_name 
Где object - существующий объект, methodname - имя, которое вы присваиваете методу, и function_name - имя функции.

Вы можете вызывать метод в контексте объекта следующим образом:

 object.methodname (params); 

Использование this для Ссылок Объекта

JavaScript имеет специальное ключевое слово, this, которое вы можете использовать, чтобы обращаться к текущему объекту. Например, пусть у вас есть функция с именем validate , которая проверяет правильность свойства значения объекта, данного объект, и high и low значения:

 



function validate(obj, lowval, hival) {
   if ((obj.value < lowval) || (obj.value > hival))
      alert("Invalid Value!")
}



 

Вы можете вызывать validate в каждом элементе формы обработчика событий onChange, используя this, как показано в следующем примере:

<INPUT TYPE = "text" NAME = "age" SIZE = 3 onChange="validate(this, 18, 99)">

Вообще, метод this обращается к вызывающему объекту.

Создание Новых Объектов

И клиент и сервер JavaScript имеют строки предопределенных объектов. Кроме того, вы можете создавать ваши собственные объекты. Создание вашего собственного объекта требует двух шагов:

Чтобы определять тип объекта, создайте функцию для типа объекта, которая определяет его имя, и его свойства и методы. Например, пусть вы хотите создавать тип объекта для автомобилей. Вы хотите этот тип объектов, который будет назван car, и Вы хотите, чтобы он имел свойства для make, model, year, и color. Чтобы сделать это, вы должны написать следующую функцию:

 function car(make, model, year) {
   this.make = make;
   this.model = model;
   this.year = year;
}



 

Замечание, используйте this, чтобы присвоить значения свойствам объекта, основанные на значениях функции.

Теперь вы можете создавать объект, с именем mycar следующим образом:

 mycar = new car("Eagle", "Talon TSi", 1993);



 

Это утверждение создает mycar и присваивает ему указанные значения для его свойств. Затем значение mycar.make - строка "Eagle", mycar.year - целое число 1993, и так далее.

Вы можете создавать любое число объектов car запрашивая к new. Например,

 



kenscar = new car("Nissan", "300ZX", 1992)



 

Объект может иметь свойство, которое является самостоятельным другим объектом. Например, пусть вы определили объект с именем person следующим образом:

 



function person(name, age, sex) {
   this.name = name;
   this.age = age;
   this.sex = sex;
}



 

И затем подтверждаете два новых объектов person следующим образом:

 



rand = new person("Rand McNally", 33, "M")
ken = new person("Ken Jones", 39, "M")



 

Затем вы можете перезаписать определение car, чтобы включить свойство владельца, которое берет объект person, следующим образом:

function car(make, model, year, owner) {
   this.make = make;
   this.model = model;
   this.year = year;
   this.owner = owner;
}



 

Затем вы используете следующее:

car1 = new car("Eagle", "Talon TSi", 1993, rand);
car2 = new car("Nissan", "300ZX", 1992, ken)



 

Заметим, что вместо прохождения строкового литерала или целого числа вычисляет при создании новых объектов, вышеупомянутый ход утверждений объектов rand и ken как аргументов владельцев. Затем, если вы хотите выяснять имя владельца car2, вы можете обращаться к следующему свойству:

 car2.owner.name 

Заметьте, что вы можете всегда прибавлять свойства к предопределенному объекту. Например, утверждение:

 car1.color = "black"
Прибавляет свойство color к car1, и присваивает ему значение " black". Однако, это не воздействует на любые другие объекты. Чтобы прибавить новое свойство ко всем объектам того же самого типа, вы должны прибавить свойство к определению типа объекта car.

Определение Методов

Вы можете определять методы для типа объекта включением определение метода на определении типа объекта. Например, пусть у вас есть набор файлов изображений GIF, и вы хотите определить метод, который показывает информацию для car, наряду с соответствующим изображением. Вы можете определить функцию типа:

 



function displayCar() {
   var result = "A Beautiful " + this.year
                + " " + this.make + " " + this.model;
   pretty_print(result)
}



 
Где pretty_print - предопределенная функция, которая показывает строку. Используйте this, чтобы обратиться к объекту, который принадлежит методу.

Вы можете делать функцию методом из car, прибавляя утверждение

 This.displayCar = displayCar;
к определению объекта. Так, полное определение car теперь выглядит так:
function car(make, model, year, owner) {
   this.make = make;
   this.model = model;
   this.year = year;
   this.owner = owner;
   this.displayCar = displayCar;
} 

Вы можете вызывать этот новый метод следующим образом:

 



car1.displayCar ()
car2.displayCar ()



 
Это будет выглядеть подобно следующему выводу:


A Beautiful 1993 Eagle Talon TSi


A Beautiful 1992 Nissan 300ZX

к банкам данных Интернет   к оглавлению   к алгоритмизации и языкам   к высокоуровневым языкам   к визуальным средам
Знаете ли Вы, что, как и всякая идолопоклонническая религия, релятивизм ложен в своей основе. Он противоречит фактам. Среди них такие:

1. Электромагнитная волна (в религиозной терминологии релятивизма - "свет") имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например, ~200 тыс км/с в стекле и ~3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью "Температура эфира и красные смещения"), разную скорость для разных частот (см. статью "О скорости ЭМ-волн")

2. В релятивизме "свет" есть мифическое явление само по себе, а не физическая волна, являющаяся волнением определенной физической среды. Релятивистский "свет" - это волнение ничего в ничем. У него нет среды-носителя колебаний.

3. В релятивизме возможны манипуляции со временем (замедление), поэтому там нарушаются основополагающие для любой науки принцип причинности и принцип строгой логичности. В релятивизме при скорости света время останавливается (поэтому в нем абсурдно говорить о частоте фотона). В релятивизме возможны такие насилия над разумом, как утверждение о взаимном превышении возраста близнецов, движущихся с субсветовой скоростью, и прочие издевательства над логикой, присущие любой религии.

4. В гравитационном релятивизме (ОТО) вопреки наблюдаемым фактам утверждается об угловом отклонении ЭМ-волн в пустом пространстве под действием гравитации. Однако астрономам известно, что свет от затменных двойных звезд не подвержен такому отклонению, а те "подтверждающие теорию Эйнштейна факты", которые якобы наблюдались А. Эддингтоном в 1919 году в отношении Солнца, являются фальсификацией. Подробнее читайте в FAQ по эфирной физике.

Последнее обновление: пятница 29 марта 2024 г.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution БОРОВСКОЕ ИССЛЕДОВАТЕЛЬСКОЕ УЧРЕЖДЕНИЕ - Технологии XXI века