Серверный JavaScript 1.4. Руководство по использованию

       

Доступ к JavaScript с Помощью JSObject


Предположим, к примеру, что вы работаете с Java-классом JavaDog. Как показано в следующем коде, конструктор JavaDog constructor принимает JavaScript-объект jsDog, который определён как имеющий тип JSObject, в качестве аргумента:

import netscape.javascript.*;

public class JavaDog
{

public String dogBreed;
    public String dogColor;
    public String dogSex;

    // определить конструктор класса

    public JavaDog(JSObject jsDog)
    {

        // использовать try...catch для обработки JSExceptions

        this.dogBreed = (String)jsDog.getMember("breed");

        this.dogColor = (String)jsDog.getMember("color");

        this.dogSex = (String)jsDog.getMember("sex");

    }
}

Обратите внимание, что метод getMember объекта JSObject используется для доступа к свойствам объекта JavaScript. Предыдущий пример использует getMember для присвоения значения JavaScript-свойства jsDog.breed члену данных Java JavaDog.dogBreed.

ПРИМЕЧАНИЕ:

Более жизненный пример помещает вызов getMember в блок try...catch для обработки ошибок типа JSException. См. .

Чтобы лучше понять, как работает getMember, посмотрим на определение специального JavaScript-объекта Dog:

function Dog(breed,color,sex) {
   this.breed = breed
   this.color = color
   this.sex = sex
}

Вы можете создать JavaScript-экземпляр Dog под названием gabby:

gabby = new Dog("lab","chocolate","female")

Если Вы вычислите свойство gabby.color, Вы увидите, что оно имеет значение "chocolate". Теперь предположим, что Вы создаёте экземпляр JavaDog в вашем JavaScript-коде, передавая объект gabby -конструктору:

javaDog = new Packages.JavaDog(gabby)

Если Вы вычислите javaDog.dogColor, Вы увидите, что оно также имеет значение "chocolate", поскольку метод getMember в Java-конструкторе присваивает dogColor значение gabby.color.



Содержание раздела