Я пытаюсь изучить ООП самостоятельно, используя AS3, и я поставил перед собой задачу для этой цели. Поскольку он довольно сложный, я пытаюсь понять полезные инструменты в AS3.Что не так в моем примере использования метода «вызова» в ActionScript 3?
Во всяком случае, метод function.call
(AS3 API doc. here) выглядит довольно интересным, и я думаю, что смогу использовать его, однако я, по-видимому, не полностью понимаю, что он делает и как он работает , Кажется, что у JavaScript есть эквивалент, который выглядит довольно простым в использовании. (Я видел this other thread с тем же вопросом, что и у меня, но в JS)
Вот пример того, что я думал о function.call
.
package
{
import flash.display.Sprite
public class Main extends Sprite
{
public var foo:Foo;
public var bar:Bar;
public function Main()
{
foo = new Foo();
bar = new Bar();
trace(bar.barProperty); //Hello World!
//I expect the 'foo.BarProp' to be called with this==bar.
foo.value = foo.BarProp.call(bar); //ReferenceError: Error #1069: Property barProperty not found on Main.as$0.Foo and there is no default value.
trace(foo.value); //Expected output: Hello World!
}
}
}
class Foo {
public var value:String;
public function Foo() {}
public function BarProp():String {
return this.barProperty;
}
}
class Bar {
public var barProperty:String = "Hello World!";
public function Bar() {}
}
Все правильно, так что это, что я просто не получаю?
1) Я не получал ошибку, потому что мой компилятор не находится в строгом режиме. 2) Я никогда не делал разницы между методом класса и объектом функции. Благодаря! –