Главная / Action Script 3
ПакетВерхний уровень
Классpublic dynamic class Object
Подклассы Accessibility, AccessibilityProperties, ActionScriptVersion, AdjustColor, AnimatorFactoryBase, AntiAliasType, ApplicationDomain, arguments, Array, Back, Back, BezierEase, BezierSegment, BitmapData, BitmapDataChannel, BitmapFilter, BitmapFilterQuality, BitmapFilterType, BlendMode, Boolean, Bounce, Bounce, BreakOpportunity, ButtonLabelPlacement, ByteArray, Capabilities, CapsStyle, CFFHinting, Circular, Class, Clipboard, ClipboardFormats, ClipboardTransferMode, ColorCorrection, ColorCorrectionSupport, ColorTransform, CompressionAlgorithm, ContentElement, ContextMenuBuiltInItems, ContextMenuClipboardItems, CSMSettings, Cubic, CuePointType, CustomActions, CustomEase, DataChangeType, DataGridColumn, DataGridEventReason, Date, Dictionary, DigitCase, DigitWidth, DisplacementMapFilterMode, DynamicMatrix, Elastic, Elastic, ElementFormat, EncryptedLocalStore, Endian, Error, Event, EventDispatcher, EventPhase, Exponential, ExternalInterface, FileFilter, FileMode, FocusDirection, FocusManager, Font, FontDescription, FontLookup, FontMetrics, FontPosture, FontStyle, FontType, FontWeight, FrameLabel, Function, FunctionEase, GradientType, Graphics, GraphicsBitmapFill, GraphicsEndFill, GraphicsGradientFill, GraphicsPath, GraphicsPathCommand, GraphicsPathWinding, GraphicsShaderFill, GraphicsSolidFill, GraphicsStroke, GraphicsTrianglePath, GridFitType, HTMLHistoryItem, HTMLHost, HTMLPDFCapability, HTMLWindowCreateOptions, ID3Info, IKArmature, IKBone, IKJoint, IMEConversionMode, int, InteractionInputType, InterpolationMethod, InvalidationType, JointStyle, JustificationStyle, Kerning, Keyboard, KeyframeBase, KeyLocation, LigatureLevel, Linear, LineJustification, LineScaleMode, ListData, LoaderContext, Math, Matrix, Matrix3D, MatrixTransformer, MotionBase, Mouse, MouseCursor, Namespace, NativeDragActions, NativeDragManager, NativeDragOptions, NativeWindowDisplayState, NativeWindowInitOptions, NativeWindowResize, NativeWindowSystemChrome, NativeWindowType, NCManager, NetStreamInfo, NetStreamPlayTransitions, None, NotificationType, Number, ObjectEncoding, Orientation3D, PerspectiveProjection, PixelSnapping, Point, PrintJobOptions, PrintJobOrientation, ProgressBarDirection, ProgressBarMode, Proxy, QName, Quadratic, Quartic, Quintic, Rectangle, RegExp, Regular, RenderingMode, Responder, RevocationCheckSettings, RotateDirection, Sample, Scene, ScrollBarDirection, ScrollPolicy, Security, SecurityDomain, SecurityPanel, Shader, ShaderData, ShaderInput, ShaderParameter, ShaderParameterType, ShaderPrecision, SharedObjectFlushStatus, SignatureStatus, SignerTrustSettings, SimpleCollectionItem, SimpleEase, Sine, SliderDirection, SliderEventClickTarget, SoundCodec, SoundLoaderContext, SoundMixer, SoundTransform, Source, SpreadMethod, SQLCollationType, SQLColumnNameStyle, SQLColumnSchema, SQLErrorOperation, SQLMode, SQLResult, SQLSchema, SQLSchemaResult, SQLTransactionLockType, StackFrame, StageAlign, StageDisplayState, StageQuality, StageScaleMode, String, Strong, StyleManager, SWFVersion, System, TabAlignment, TabStop, TextBaseline, TextBlock, TextColorType, TextDisplayMode, TextFieldAutoSize, TextFieldType, TextFormat, TextFormatAlign, TextJustifier, TextLineCreationResult, TextLineMetrics, TextLineMirrorRegion, TextLineValidity, TextRenderer, TextRotation, TextSnapshot, TileListCollectionItem, Transform, TriangleCulling, Tweenables, TypographicCase, uint, Updater, URLLoaderDataFormat, URLRequest, URLRequestDefaults, URLRequestHeader, URLRequestMethod, URLVariables, Utils3D, Vector, Vector3D, VideoAlign, VideoScaleMode, VideoState, XML, XMLList, XMLNode, XMLNodeType, XMLUI

Версии среды выполнения:  1.0 9

Класс Object находится в корне иерархии классов ActionScript. Объекты создаются конструкторами с помощью синтаксиса оператора new, и им можно динамически присвоить свойства. Объекты могут также создаваться путем присвоения литерала объекта (см. ниже):
var obj:Object = {a:"foo", b:"bar"}

Все классы, которые не объявляют базовый класс явным образом, расширяют встроенный класс Object.

Класс Object можно использовать для создания массивов ассоциативных элементов. В сущности, массив ассоциативных элементов является экземпляром класса Object, и каждая пара "ключ-значение" представлена свойством и его значением. Еще одна причина объявить массив ассоциативных элементов с помощью типа данных Object состоит в том, что после этого можно использовать литерал объекта, чтобы заполнить массив ассоциативных элементов (но только в тот раз, когда он объявлен). В следующем примере массив ассоциативных элементов создается с помощью литерала объекта, доступ к элементам выполняется как с помощью оператора-точки, так и посредством оператора доступа к массиву, а затем путем создания нового свойства создается новая пара ключ-значение:

 var myAssocArray:Object = {fname:"John", lname:"Public"};
 trace(myAssocArray.fname);     // John
 trace(myAssocArray["lname"]);  // Public
 myAssocArray.initial = "Q";
 trace(myAssocArray.initial);   // Q

ActionScript 3.0 имеет два типа наследования: наследование классов и наследование прототипов:

Наследование классов и наследование прототипов может выполняться одновременно, как показано в следующем примере.

 class A {
     var x = 1
     prototype.px = 2
 }
 dynamic class B extends A {
     var y = 3
     prototype.py = 4
 }
  
 var b = new B()
 b.x // 1 via class inheritance
 b.px // 2 via prototype inheritance from A.prototype
 b.y // 3
 b.py // 4 via prototype inheritance from B.prototype
  
 B.prototype.px = 5
 b.px // now 5 because B.prototype hides A.prototype
  
 b.px = 6
 b.px // now 6 because b hides B.prototype

Заменив класс функциями, можно создавать пользовательские деревья наследования прототипов. В случае классов дерево наследования прототипов аналогично дереву наследования классов. Однако, поскольку объекты прототипов являются динамическими, можно добавить или удалить свойства, основанные на прототипах во время выполнения.

Посмотреть примеры

См. также

prototype
Типы данных
Описания типов данных


Общедоступные свойства
 СвойствоОпределено
  constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  prototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
Общедоступные методы
 МетодОпределено
  
Создает объект Object и сохраняет ссылку на метод конструктора объекта в свойстве конструктора объекта.
Object
  
Показывает, определено ли заданное свойство для объекта.
Object
  
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
  
Показывает наличие заданного свойства и его перечисляемость.
Object
  
Задает доступность динамического свойства для операций цикла.
Object
  
Возвращает строковое представление заданного объекта.
Object
  
Возвращает элементарное значение заданного объекта.
Object
Сведения о свойстве
constructorсвойство
public var constructor:Object

Версии среды выполнения:  1.0 9

Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. Если объект представляет собой экземпляр класса, в свойстве constructor содержится ссылка на объект класса. Если объект создается с помощью функции конструктора, свойство constructor содержит ссылку на эту функцию конструктора. Функцию конструктора не следует путать с методом конструктора для класса. Функция конструктора — это объект Function, используемый для создания объектов и применяемый при определении классов наряду с ключевым словом class.

Если ключевое слово class используется для определения класса, объекту прототипа класса присваивается свойство constructor, в котором содержится ссылка на объект класса. Экземпляр класса наследует это свойство из объекта прототипа. Например, следующий код создает новый класс A и экземпляр класса myA:

  dynamic class A {}
  trace(A.prototype.constructor);      // [class A]
  trace(A.prototype.constructor == A); // true
  var myA:A = new A();
  trace(myA.constructor == A);         // true

Опытные пользователи могут выбрать ключевое слово function вместо слова class, чтобы определить объект Function, который можно использовать в качестве шаблона при создании объектов. Такая функция называется функцией конструктора, поскольку ее можно применять в сочетании с оператором new для создания объектов. Если ключевое слово function используется для создания функции конструктора, объекту прототипа класса присваивается свойство constructor, в котором содержится ссылка на функцию конструктора. Если затем функция конструктора используется для создания объекта, объект наследует свойство constructor из объекта прототипа функции конструктора. Например, следующий код создает новую функцию конструктора f и объект с именем myF:

  function f() {}
  trace(f.prototype.constructor);      // function Function() {}
  trace(f.prototype.constructor == f); // true
  var myF = new f();
  trace(myF.constructor == f);         // true

Примечание. Свойство constructor является записываемым. Это означает, что код пользователя может изменить его значение с помощью инструкции присваивания. Не рекомендуется изменять значение свойства constructor, но если создается код, зависящий от значения свойства constructor, необходимо убедиться, что это значение не сброшено. Значение может изменяться только тогда, когда доступ к данному свойству выполняется с помощью объекта прототипа (например, className.prototype.constructor).

См. также

prototypeсвойство 
public static var prototype:Object

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Ссылка на модель объекта класса или функции. Автоматически создается свойство prototype, которое присваивается любому созданному классу или объекту функции. Это свойство является статическим, так как относится только к созданному классу или функции. Например, если создается класс, значение свойства prototype используется всеми экземплярами класса и доступно только как свойство класса. Экземпляры класса не могут напрямую обращаться к свойству prototype.

Объект прототипа класса — это особый экземпляр данного класса, обеспечивающий механизм распространения состояния на все экземпляры класса. Если во время выполнения в экземпляре класса не найдено свойство, наличие свойства проверяется у делегата, в роли которого выступает объект прототипа класса. Если объект прототипа не содержит свойства, этот процесс выполняется по отношению к делегату объекта прототипа. При этом проверка производится последовательно на все более и более высоких уровнях иерархии до тех пор, пока Flash Player не найдет свойство.

Примечание. В ActionScript 3.0 наследование прототипов не является основным механизмом наследования. Главный механизм наследования в ActionScript 3.0 — это наследование классов, обеспечивающее наследование фиксированных свойств в определениях классов.

См. также

Сведения о конструкторе
Object()Конструктор
public function Object()

Создает объект Object и сохраняет ссылку на метод конструктора объекта в свойстве конструктора объекта.

См. также

Сведения о методе
hasOwnProperty()метод
AS3 function hasOwnProperty(name:String):Boolean

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Показывает, определено ли заданное свойство для объекта. Этот метод возвращает значение true, если у целевого объекта есть свойство, совпадающее со строкой, указанной параметром name. В противном случае указывается значение false. Следующие типы свойств заставляют метод возвращать значение true для объектов, которые являются экземплярами классов (в отличие от объектов класса):

Следующие типы свойств заставляют метод возвращать значение false для объектов, которые являются экземплярами класса:

В ActionScript 3.0 тоже есть объекты классов, которые прямо представляют определения классов. Когда метод hasOwnProperty() вызывается по отношению к объектам класса, то значение true присваивается только в том случае, если свойство является статическим и определено в данном объекте класса. Например, если создается подкласс Array под названием CustomArray и в CustomArray определяется статическое свойство с именем foo, вызов CustomArray.hasOwnProperty("foo") возвращает значение true. Однако для статического свойства DESCENDING, определенного в классе Array, вызов CustomArray.hasOwnProperty("DESCENDING") возвращает значение false.

Примечание. Методы класса Object динамически создаются в прототипе Object. Чтобы переопределить этот метод в подклассе Object, не используйте ключевое слово override. Например, в подклассе Object вместо переопределения базового класса применяется function hasOwnProperty():Boolean.

Параметры

name:String — Свойство объекта.

Возвращает
Boolean — Если у целевого объекта есть свойство, указанное параметром name, выбирается значение true. В противном случае выбирается false.
isPrototypeOf()метод 
AS3 function isPrototypeOf(theClass:Object):Boolean

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. Этот метод возвращает значение true, если объект находится в цепи прототипов объекта, указанного параметром theClass. Метод возвращает значение false, если целевой объект отсутствует в цепи прототипов объекта theClass, а параметр theClass не является объектом.

Примечание. Методы класса Object динамически создаются в прототипе Object. Чтобы переопределить этот метод в подклассе Object, не используйте ключевое слово override. Например, в подклассе Object вместо переопределения базового класса применяется function isPrototypeOf():Boolean.

Параметры

theClass:Object — Класс, на который может ссылаться указанный объект.

Возвращает
Boolean — Если объект находится в цепи прототипов объекта, указанного параметром theClass, выбирается значение true. В противном случае устанавливается значение false.
propertyIsEnumerable()метод 
AS3 function propertyIsEnumerable(name:String):Boolean

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Показывает наличие заданного свойства и его перечисляемость. Значение true указывает на то, что свойство существует и может быть перечислено в цикле for..in. Это свойство должно существовать в целевом объекте, поскольку этот метод не проверяет цепи прототипов целевого объекта.

Созданные пользователем свойства перечисляемы, а встроенные свойства, как правило, нет.

Примечание. Методы класса Object динамически создаются в прототипе Object. Чтобы переопределить этот метод в подклассе Object, не используйте ключевое слово override. Например, в подклассе Object вместо переопределения базового класса применяется function propertyIsEnumerable():Boolean.

Параметры

name:String — Свойство объекта.

Возвращает
Boolean — Если свойство, указанное параметром name, перечисляемо, появляется значение true. В противном случае присваивается значение false.
setPropertyIsEnumerable()метод 
public function setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Задает доступность динамического свойства для операций цикла. Это свойство должно существовать в целевом объекте, поскольку этот метод не проверяет цепи прототипов целевого объекта.

Параметры

name:String — Свойство объекта.
 
isEnum:Boolean (default = true) — Если выбрано значение false, динамическое свойство не появляется в циклах for..in, а метод propertyIsEnumerable() возвращает значение false.

См. также

toString()метод 
public function toString():String

Версии среды выполнения:  1.0 9

Возвращает строковое представление заданного объекта.

Примечание. Методы класса Object динамически создаются в прототипе Object. Чтобы переопределить этот метод в подклассе Object, не используйте ключевое слово override. Например, в подклассе Object вместо переопределения базового класса применяется function toString():String.

Возвращает
String — Строковое представление объекта.
valueOf()метод 
public function valueOf():Object

Версии среды выполнения:  1.0 9

Возвращает элементарное значение заданного объекта. Если у объекта нет элементарного значения, возвращается объект как таковой.

Примечание. Методы класса Object динамически создаются в прототипе Object. Чтобы переопределить этот метод в подклассе Object, не используйте ключевое слово override. Например, в подклассе Object вместо переопределения базового класса применяется function valueOf():String.

Возвращает
Object — Элементарное значение данного объекта или самого объекта.

См. также

Примеры Как пользоваться примерами
ObjectExample.as

В следующем примере классы ObjectExample и Circle используются, чтобы продемонстрировать динамический характер класса Object. Кроме того, показывается, как объекты значений могут быть преобразованы в объекты Shape, а затем добавлены в рабочую область с указанными координатами "x" и "y".

В примере создаются объекты значений firstInitObj и secondInitObj. Пользовательский класс Circle принимает объект значения и циклически обрабатывает его, подставляя совпадающие внутренние свойства вместо свойств, определенных в объекте значения.

package {
    import flash.display.Sprite;

    public class ObjectExample extends Sprite {
        public function ObjectExample() {
            var firstInitObj:Object = new Object();
            firstInitObj.bgColor = 0xFF0000;
            firstInitObj.radius = 25;
            firstInitObj.xCenter = 25;
            firstInitObj.yCenter = 25;
                        
            var firstCircle:Circle = new Circle(firstInitObj);
            addChild(firstCircle);
            firstCircle.x = 50;
            firstCircle.y = 50;

            var secondInitObj:Object = {bgColor:0xCCCCCC, radius:50, xCenter:50, yCenter:50};

            var secondCircle:Circle = new Circle(secondInitObj);            
            addChild(secondCircle);
            secondCircle.x = 100;
            secondCircle.y = 100;
        }
        
    }
}

import flash.display.Shape;
    
class Circle extends Shape {
    public var bgColor:Number = 0xFFFFFF;
    public var radius:Number = 0;
    public var xCenter:Number = 0;
    public var yCenter:Number = 0;
        
    public function Circle(initObj:Object) {
        for(var i:String in initObj) {
            this[i] = initObj[i];
        }
        draw();
    }
        
    public function draw():void {
        graphics.beginFill(bgColor);
        graphics.drawCircle(xCenter, yCenter, radius);
        graphics.endFill();
    }
}