Loading:


Object __resolve [AS 2]

Klasa: Object

Kompatybilność: ActionScript 1.0, Flash 5+

 

Referencja do zdefiniowanej przez użytkownika funkcji, która jest wywoływana jeśli kod ActionScript odwołuje się do niezdefiniowanej właściwości lub metody.

 

Jeśli kod ActionScript odwołuje się do niezdefiniowanej właściwości lub metody, wtedy Flash Player określa, czy właściwość obiektu __resolve jest zdefiniowana. Jeśli tak, funckja do której się odnosi właściwość jest wykonywana oraz przekazana zostaje nazwa niezdefiniowanej metody lub właściwości.

 

To pozwala programiście wspomagać wartości dla niezdefiniowanych właściwości oraz instrukcji pod niezdefiniowane metody oraz imituje, że niezdefioniowane właściwości lub metody są aktualnie definiowane. Ta właściwość jest pomocna dla aktywowania wysoko przezroczystych komunikacji klient/serwer oraz jest rekomendowaną drogą wykonywania metod po stronie serwera.



Napisz Artyku³

Listing

//#1

var myObject:Object = new Object();
myObject.__resolve = function (name) {
    return "Hello, world!";
};
trace (myObject.property1); // zwróci: Hello, world!
trace (myObject.property2); // zwróci: Hello, world!


//#2


var myObject:Object = new Object();
myObject.myFunction = function (name) {
    trace("Method " + name + " was called");
};

myObject.__resolve = function (name) {
     return function () { this.myFunction(name); };
};

myObject.someMethod(); // zwróci: Method someMethod was called
myObject.someOtherMethod(); //zwróci: Method someOtherMethod was called


//#3

var myObject:Object = new Object();
myObject.myFunction = function(name) {
    trace("Method "+name+" was called");
};

myObject.__resolve = function(name) {
    trace("Resolve called for "+name);

    var f:Function = function () {
        this.myFunction(name);
    };
   
    this[name] = f;

    return f;
};

myObject.someMethod(); // wezwanie __resolve
myObject.someMethod(); // nie wzywa __resolve ponieważ nie jest teraz definiowane
myObject.someOtherMethod(); // wezwanie __resolve
myObject.someOtherMethod(); // nie wzywa __resolve, ponieważ nie jest dłużej niezdefiniowany


//#4

var myObject:Object = new Object();
myObject.myFunction = function(name) {
    trace("Method "+name+" was called");
};

myObject.__resolve = function(name) {
   
    if (name == "onStatus") {
        return undefined;
    }
    trace("Resolve called for "+name); // to check when __resolve is called

    var f:Function = function () {
        this.myFunction(name);
    };
   
    this[name] = f;
   
    return f;
};

trace(myObject.onStatus("hello"));
// zwróci: undefined


//#5

var myObject:Object = new Object();
myObject.myFunction = function (name) {
    arguments.shift();
    trace("Method " + name + " was called with arguments: " + arguments.join(','));
};

myObject.__resolve = function (name) {

    if (name == "onStatus") {
        return undefined;
    }
    var f:Function = function () {
        arguments.unshift(name);
        this.myFunction.apply(this, arguments);
    };
 
    this[name] = f;
   
    return f;
};

myObject.someMethod("hello");
// zwróci: Method someMethod was called with arguments: hello

myObject.someOtherMethod("hello","world");
// zwróci: Method someOtherMethod was called with arguments: hello,world

 




Dodano przez: divix
Ranga: Administrator serwisu Punktów: 0
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors