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.
Listing
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
Ranga: Administrator serwisu Punktów: 0