Клиентский JavaScript 1.3 Руководство

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


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

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

import netscape.javascript.*;

public class JavaDog
{
public String dogBreed;
    public String dogColor;
    public String dogSex;

    // определяется конструктор класса
    public JavaDog(JSObject jsDog)
    {
        // здесь используйте try...catch для обработки JSException
        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. См. "Обработка Исключений JavaScript в Java".

Чтобы лучше представить работу 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.



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