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

Объектная модель 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

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

Физический вакуум - понятие релятивистской квантовой физики, под ним там понимают низшее (основное) энергетическое состояние квантованного поля, обладающее нулевыми импульсом, моментом импульса и другими квантовыми числами. Физическим вакуумом релятивистские теоретики называют полностью лишённое вещества пространство, заполненное неизмеряемым, а значит, лишь воображаемым полем. Такое состояние по мнению релятивистов не является абсолютной пустотой, но пространством, заполненным некими фантомными (виртуальными) частицами. Релятивистская квантовая теория поля утверждает, что, в согласии с принципом неопределённости Гейзенберга, в физическом вакууме постоянно рождаются и исчезают виртуальные, то есть кажущиеся (кому кажущиеся?), частицы: происходят так называемые нулевые колебания полей. Виртуальные частицы физического вакуума, а следовательно, он сам, по определению не имеют системы отсчета, так как в противном случае нарушался бы принцип относительности Эйнштейна, на котором основывается теория относительности (то есть стала бы возможной абсолютная система измерения с отсчетом от частиц физического вакуума, что в свою очередь однозначно опровергло бы принцип относительности, на котором постороена СТО). Таким образом, физический вакуум и его частицы не есть элементы физического мира, но лишь элементы теории относительности, которые существуют не в реальном мире, но лишь в релятивистских формулах, нарушая при этом принцип причинности (возникают и исчезают беспричинно), принцип объективности (виртуальные частицы можно считать в зависимсоти от желания теоретика либо существующими, либо не существующими), принцип фактической измеримости (не наблюдаемы, не имеют своей ИСО).

Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.

Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.

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

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

Последнее обновление: суббота 18 мая 2024 г.
Bourabai Research Institution home page

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