Какие свойства относятся к свойствам объекта frames

Какие свойства относятся к свойствам объекта frames thumbnail

Наиболее важная часть объекта – его свойства. Объект представляет из себя набор свойств, и каждое свойство состоит из имени и значения, ассоциированного с этим именем. Именем свойства (ключом) может быть только строка, а вот значением – любой тип данных. Если значением свойства является функция, то её можно назвать методом объекта.

Свойства объектов в JavaScript являются теми же самыми переменными, за тем исключением, что они закреплены за объектом. Как и все переменные JavaScript, имя объекта (которое тоже может быть переменной) и имя свойства чуствительны к регистру. Свойства объекта определяют его индивидуальные характеристики.

Получить значение свойства можно с помощью операторов точки (.) или квадратных скобок ([]). Значение в левой части оператора должно быть ссылкой на объект, обычно это просто имя переменной, содержащей ссылку на объект, но это может быть любое допустимое в JavaScript выражение, являющееся объектом.

Значение в правой части оператора должно быть именем свойства. При использовании оператора точка (.) справа должен находиться простой идентификатор, соответствующий имени свойства. Доступ к любому имени свойства, которое содержит невалидный JavaScript идентификатор (например, имя свойства содержит в себе пробел, тире или начинается с цифры), может быть получен с использованием квадратных скобок ([]).

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

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

Квадратные скобки также позволяют обратиться к свойству, имя которого хранится в переменной:

Если имя свойства хранится в переменной, то единственный способ к нему обратиться – это применение оператора [] (квадратные скобки).

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

Методы объектов можно добавлять и удалять в любой момент, точно также как вы поступаете с обычными свойствами объектов:

Для доступа к свойствам объекта внутри метода используется ключевое слово this. Использование this позволяет ссылаться на объект, к которому принадлежит метод:

Здесь вместо this внутри функции (метода) greeting можно было бы обратиться к объекту, используя переменную person (сам объект):

Ключевое слово this

var person = {
name: ‘John’,
greeting: function() {
alert( ‘Hello, ‘ + this.name + ‘!’);
}
// идентичная запись
greeting: function() {
alert( ‘Hello, ‘ + person.name + ‘!’);
}

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

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

Через ключевое слово this метод может получить доступ не только к любому свойству объекта, но и передать куда-нибудь ссылку на сам объект:

Известно, что каждый объект содержит ссылку на свой объект-прототип. Если метод находится где-то в цепочке прототипов, то this ссылается на объект, на котором был вызван метод, т.е. как будто этот метод является методом самого объекта, а не прототипа.

В этом примере объект person, не имеет собственного свойства (метода) fullName, а наследует это свойство от своего прототипа prototypeObject. Поскольку поиск свойства начался с person.fullName, то this внутри функции fullName будет ссылаться на объект person. Таким образом, если fullName вызывается как метод объекта person, то и this относится к person. Это очень важная особеность прототипного наследования JavaScript.

Оператор delete удаляет свойство из объек­та. Он удаляет свойство объекта, если оно есть. Удаление не касается свойств объектов, связанных по цепочке прототипов. Если свойство с таким же именем существует в цепочке прототипов, объект унаследует это свойство из прототипа.

Выражение delete возвращает true, если удаление свойства прошло успешно. delete вернет false только в том случае, когда свойство не было удалено (например, если свойство относится к защищенному объекту, принадлежащему браузеру). true возвращается даже в том случае, если свойство, которое вы пытаетесь удалить, не существует в объекте:

Читайте также:  Каким замечательным свойством обладают медианы
  • Объект представляет собой набор свойств.
  • Получить значение свойства можно с помощью операторов точки (.) или квадратных скобок ([]).
  • Свойства можно добавить в объект в любой момент. Для этого следует присвоить значение с указанием имени нового свойства.
  • Метод представляет собой свойство, значением которого является функция. Для ссылки на объект, из которого вызывается метод, используется ключевое слово this.
  • Методы можно вызывать в точечной записи: имя объекта, точка и имя свойства метода, за которым следует пара круглых скобок.
  • Метод можно рассматривать как функцию, присвоенную свойству, поэтому новый метод можно добавить в любой момент.
  • Методы могут получать аргументы, как и обычные функции.
  • Если несуществующему свойству объекта присваивается значение, данное свойство добавляется в объект. Для удаления свойств используют инструкцию delete.
  • Свойства объекта

    Почему данный код выдаёт синтаксическую ошибку?

    var cat = {
    legs: 4
    name: «Гармония»
    color: «Черепаховый»
    };

    alert( cat.name ); // SyntaxError

    Показать решение

    Решение:

    Чтобы исправить ошибку, нужно добавить запятую после первого и второго свойства.

    • Доступ к свойствам объекта

      Сохраните значения свойств объекта myObj в переменных x, y и z. Выведите значения переменных x, y и z через alert.

      var myObj = {
      «an entree»: «hamburger»,
      «my side»: «veggies»,
      «the drink»: «water»
      };

      // ваш код

      Показать решение

      • Свойство в переменной

        1. В переменной myDog сохраните имя свойства объекта dogs: «hunter».
        2. Присвойте свойство с именем myDog и значением «Ротвейлер» объекту dogs.
        3. Выведите значение свойства, хранящегося в переменной myDog через alert.
        var dogs = {
        running: «Арабская борзая»,
        hunter: «Лабрадор»,
        guard: «Московская»
        }

        // ваш код

        Показать решение

        Решение:

        Если имя свойства объекта хранится в переменной (var myDog = «hunter»), то обратиться к нему можно только через квадратные скобки dogs[myDog].

        • Обновить свойство

          Поменяйте значение свойства guard c «Московская» на «Московская-сторожевая»

          var dogs = {
          running: «Арабская борзая»,
          hunter: «Лабрадор»,
          guard: «Московская»
          }

          // ваш код

          Показать решение

          Решение:

          Если имя свойства объекта хранится в переменной (var myDog = «hunter»), то обратиться к нему можно только через квадратные скобки dogs[myDog].

          • Добавление и удаление свойств

            Добавьте в объект dogs свойство с именем driving и значением «Сибирский хаски». Удалите свойство «guard» из dogs. Выведите вновь добавленное и удалённое свойства через alert.

            var dogs = {
            running: «Арабская борзая»,
            hunter: «Лабрадор»,
            guard: «Московская-сторожевая»
            }

            // ваш код

            Показать решение

            • Добавление метода

              1. Определите никак не связанную с приведенными объектами dog_1 и dog_2 функцию testBreed, которая будет выводить породу (breed), тип (a type) и вес (the weight) собаки.
              2. Присвойте функцию testBreed свойству sayAbout для обоих объектов.
              3. Запустите функцию testBreed для каждого из объектов.
              var dog_1 = {
              breed: «Алабай»,
              «a type»: «собака-компаньон»,
              «the weight»: «50 кг»
              }

              var dog_2 = {
              breed: «Бультерьер»,
              «a type»: «бойцовская»,
              «the weight»: «36 кг»
              }

              // ваш код

              Показать решение

Источник

Фреймовая модель представления знаний – была предложена М.Минским в 1979 г. как структура знаний для восприятия пространственных сцен. Эта модель, как и семантическая сеть, имеет глубокое психологическое обоснование.

В психологии и философии известно понятие абстрактного образа. Например, слово «комната» вызывает у слушающих образ комнаты: «жи­лое помещение с четырьмя стенами, полом, потолком, окнами и дверью, пло­щадью 6-20 м2». Из этого описания ничего нельзя убрать (например, убрав окна, получим уже чулан, а не комнату), но в нем есть «дырки», или «слоты», — это незаполненные значения некоторых ат­ри­бутов — ко­ли­чество окон, цвет стен, высота потолка, покрытие пола и др. В этой теории та­кой абстрактный образ называется фреймом.

Фреймом называется также и формализованная модель для отобра­же­ния образа.

В качестве идентификатора фрейму присваивается имя фрей­ма. Это имя должно быть единственным во всей фреймовой системе.

Фрейм имеет определенную внутреннюю структуру, состоящую из мно­­жества элементов, называемых слотами, которым также присва­и­ва­ют­ся имена. За слотами следуют шпации, в которые помещают данные, представляющие текущие значения слотов. Каждый слот в свою очередь представляется опре­де­ленной струк­турой данных. В значение слота подставляется конкретная инфор­ма­ция, относящаяся к объекту, описываемому этим фреймом.

Читайте также:  Какие полезные свойства кунжут

Структуру фрейма можно представить так:

ИМЯ ФРЕЙМА:

(имя 1-го слота: значение 1-го слота),

(имя 2-го слота: значение 2-го слота),

— — — —

(имя N-го слота: значение N-гo слота).

Ту же запись представим в виде таблицы, дополнив двумя столбцами.

Таблица 5.1 – Структура фрейма

Имя слота

значение слота

способ получения значения

присоединённая процедура

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

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

Модель фрейма является достаточно универсальной, поскольку позволяет отобразить все многообразие знаний о мире:

  • через фреймы-структуры, для обозначения объектов и понятий (заем, залог, вексель);
  • через фреймы-роли (менеджер, кассир, клиент);
  • через фреймы-сценарии (банкротство, собрание акционеров, празднование именин);
  • через фреймы-ситуации (тревога, авария, рабочий режим устройства) и др.

Важнейшим свойством теории фреймов является заимствованное из теории семантических сетей наследование свойств. И во фреймах, и в се­ман­тических сетях наследование происходит по AKO-связям (A-Kind-Of = это). Слот АКО указывает на фрейм более высокого уровня иерархии, от­ку­да неявно наследуются, то есть переносятся, значения аналогичных сло­тов.

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

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

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

Имя слота. Оно должно быть уникальным в пределах фрейма. Обычно имя слота представляет собой идентификатор, который наделен определенной семантикой. В качестве имени слота может выступать произвольный текст. Например, <Имя слота> = Главный герой романа Ф.М. Достоевского «Идиот», <Значение слота>= Князь Мышкин. Имена системных слотов обычно зарезервированы, в различных системах они могут иметь различные значения. Примеры имен системных слотов: ISA, HASPART, RELATIONS и т.д. Системные слоты служат для редактирования базы знаний и управления выводом во фреймовой системе.

Указатели наследования. Они показывают, какую информацию об атрибутах слотов из фрейма верхнего уровня наследуют слоты с аналогичными именами в данном фрейме. Указатели наследования характерны для фреймовых систем иерархического типа, основанных на отношениях типа «абстрактное — конкретное». В конкретных системах указатели наследования могут быть организованы различными способами и иметь разные обозначения:

U (Unique) — значение слота не наследуется;

S (Same) — значение слота наследуется;

R (Range) — значения слота должны находиться в пределах интервала значений, указанных в одноименном слоте родительского фрейма;

O (Override) — при отсутствии значения в текущем слоте оно наследуется из фрейма верхнего уровня, однако в случае определения значения текущего слота оно может быть уникальным. Этот тип указателя выполняет одновременно функции указателей U и S.

Указатель типа данных. Он показывает тип значения слота. Наиболее употребляемые типы: frame — указатель на фрейм; real — вещественное число; integer — целое число; boolean — логический тип; text – фрагмент текста; list — список; table — таблица; expression — выражение; lisp — связанная процедура и т.д.

Значение слота. Оно должно соответствовать указанному типу данных и условию наследования.

Демоны. Демоном называется процедура, автоматически запускаемая при выполнении некоторого условия. Демоны автоматически запускаются при обращении к соответствующему слоту. Типы демонов связаны с условием запуска процедуры. Демон с условием IFNEEDED запускается, если в момент обращения к слоту его значение не было установлено. Демон типа IFADDED запускается при попытке изменения значения слота. Демон IFREMOVED запускается при попытке удаления значения слота. Возможны также другие типы демонов. Демон является разновидностью связанной процедуры.

Читайте также:  Какое из следующих свойств дифференциала функции сформулировано неверно

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

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

Приведем несколько примеров фреймовых описаний.

Пример 1. Фрейм, описывающий человека.

Фрейм:

Человек

Имя слота:

Значение слота

Класс:

Животное

Структурный элемент:

Голова, шея, руки, …

Рост:

30 ? 220 см

Масса:

1 ? 200 кг

Хвост:

Нет

Язык:

Русский, английский, …

Связь:

Обезьяна

Пример 2. Описание с помощью фреймов понятия письменного отчета.

В виде семантической сети «отчет» можно представить следующим образом.

Статья 61 - Картинка 1

Рис. 5.1. Семантическая сеть понятия «отчет»

Приведем представление понятия отчёта с помощью фреймов.

Статья 61 - Картинка 2

Рис. 5.2. Представление понятия «отчет» в виде фреймов

Пример 3. Спецификации фреймов на продукционно-фреймовом языке описания знаний PILOT/2.

Фреймы John и Mary — экземпляры фрейма-прототипа Person.

[Person is_a prototype;

Name string, if_changed ask_why();

Age int, restr_by >=0;

Sex string, restr_by (==”male” || ==”female”),

by_default “male”;

Children {frame}];

[John is_a Person; if_deleted bury();

Name = ”Johnson”;

Age = 32;

Children = {Ann, Tom}];

[Mary is_a Person;

without Age;

Name = ”Smirnova”;

Sex = ”female”;

Children = empty];

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

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

Специальные языки представления знаний в сетях фреймов FRL (Frame Representation Language), KRL (Knowledge Representation Language), фреймовая оболочка Kappa, PILOT/2 и другие программные средства позволяют эффективно строить промышленные системы.

В последние годы термин «фреймовый» часто заменяют термином «объектно-ориентированный». Этот подход является развитием фреймового представления. Шаблон фрейма можно рассматривать как класс, экземпляр фрейма — как объект. Языки объектно-ориентированного программирования (ООП) предоставляют средства создания классов и объектов, а также средства для описания процедур обработки объектов (методы). Языки ООП, не содержащие средств реализации присоединенных процедур, не позволяют организовать гибкий механизм логического вывода, поэтому разработанные на них программы либо представляют собой объектно-ориентированные базы данных, либо требуют интеграции с другими средствами обработки знаний (например, с языком PROLOG).

Объектно-ориентированная методология представления знаний реа­ли­зована в системах G2, RTWorks.

Источник