8c1dea14

Доступ к 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 используется для обработки 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.



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