Ext.data.JsonP.Ext_data_amf_Encoder({"alternateClassNames":[],"aliases":{"data":["amf.Encoder"]},"enum":null,"parentMixins":[],"tagname":"class","subclasses":[],"extends":"Ext.Base","uses":[],"html":"
Hierarchy
Ext.BaseExt.data.amf.EncoderFiles
This class serializes data in the Action Message Format (AMF) format.\nIt can write simple and complex objects, to be used in conjunction with an\nAMF-compliant server.\nTo encode a byte array, first construct an Encoder, optionally setting the format:
\n\nvar encoder = Ext.create('Ext.data.amf.Encoder', {\n format: 3\n});\n
\n\nThen use the writer methods to out data to the :
\n\nencoder.writeObject(1);\n
\n\nAnd access the data through the bytes property:
\n\nencoder.bytes;\n
\n\nYou can also reset the class to start a new byte array:
\n\nencoder.clear();\n
\n\nCurrent limitations:\nAMF3 format (format:3)\n- writeObject will write out XML object, not legacy XMLDocument objects. A\n writeXmlDocument method is provided for explicitly writing XMLDocument\n objects.\n- Each object is written out explicitly, not using the reference tables\n supported by the AMF format. This means the function does NOT support\n circular reference objects.\n- Array objects: only the numbered indices and data will be written out.\n Associative values will be ignored.\n- Objects that aren't Arrays, Dates, Strings, Document (XML) or primitive\n values will be written out as anonymous objects with dynamic data.\n- There's no JavaScript equivalent to the ByteArray type in ActionScript,\n hence data will never be searialized as ByteArrays by the writeObject\n function. A writeByteArray method is provided for writing out ByteArray objects.
\n\nAMF0 format (format:0)\n- Each object is written out explicitly, not using the reference tables\n supported by the AMF format. This means the function does NOT support\n circular reference objects.\n- Array objects: the function always writes an associative array (following\n the behavior of flex).\n- Objects that aren't Arrays, Dates, Strings, Document (XML) or primitive\n values will be written out as anonymous objects.
\n\nFor more information on working with AMF data please refer to the\nAMF Guide.
\nGet the reference to the current class from which this object was instantiated. Unlike statics,\nthis.self
is scope-dependent and it's meant to be used for dynamic inheritance. See statics\nfor a detailed comparison
Ext.define('My.Cat', {\n statics: {\n speciesName: 'Cat' // My.Cat.speciesName = 'Cat'\n },\n\n constructor: function() {\n alert(this.self.speciesName); // dependent on 'this'\n },\n\n clone: function() {\n return new this.self();\n }\n});\n\n\nExt.define('My.SnowLeopard', {\n extend: 'My.Cat',\n statics: {\n speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard'\n }\n});\n\nvar cat = new My.Cat(); // alerts 'Cat'\nvar snowLeopard = new My.SnowLeopard(); // alerts 'Snow Leopard'\n\nvar clone = snowLeopard.clone();\nalert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard'\n
\nSets the functions that will correctly serialize for the relevant\nprotocol version.
\nthe protocol version to support
\nCall the original method that was previously overridden with override
\n\nExt.define('My.Cat', {\n constructor: function() {\n alert(\"I'm a cat!\");\n }\n});\n\nMy.Cat.override({\n constructor: function() {\n alert(\"I'm going to be a cat!\");\n\n this.callOverridden();\n\n alert(\"Meeeeoooowwww\");\n }\n});\n\nvar kitty = new My.Cat(); // alerts \"I'm going to be a cat!\"\n // alerts \"I'm a cat!\"\n // alerts \"Meeeeoooowwww\"\n
\n This method has been deprecated
\nas of 4.1. Use callParent instead.
\n\nThe arguments, either an array or the arguments
object\nfrom the current method, for example: this.callOverridden(arguments)
Returns the result of calling the overridden method
\nCall the \"parent\" method of the current method. That is the method previously\noverridden by derivation or by an override (see Ext.define).
\n\n Ext.define('My.Base', {\n constructor: function (x) {\n this.x = x;\n },\n\n statics: {\n method: function (x) {\n return x;\n }\n }\n });\n\n Ext.define('My.Derived', {\n extend: 'My.Base',\n\n constructor: function () {\n this.callParent([21]);\n }\n });\n\n var obj = new My.Derived();\n\n alert(obj.x); // alerts 21\n
\n\nThis can be used with an override as follows:
\n\n Ext.define('My.DerivedOverride', {\n override: 'My.Derived',\n\n constructor: function (x) {\n this.callParent([x*2]); // calls original My.Derived constructor\n }\n });\n\n var obj = new My.Derived();\n\n alert(obj.x); // now alerts 42\n
\n\nThis also works with static methods.
\n\n Ext.define('My.Derived2', {\n extend: 'My.Base',\n\n statics: {\n method: function (x) {\n return this.callParent([x*2]); // calls My.Base.method\n }\n }\n });\n\n alert(My.Base.method(10); // alerts 10\n alert(My.Derived2.method(10); // alerts 20\n
\n\nLastly, it also works with overridden static methods.
\n\n Ext.define('My.Derived2Override', {\n override: 'My.Derived2',\n\n statics: {\n method: function (x) {\n return this.callParent([x*2]); // calls My.Derived2.method\n }\n }\n });\n\n alert(My.Derived2.method(10); // now alerts 40\n
\n\nTo override a method and replace it and also call the superclass method, use\ncallSuper. This is often done to patch a method to fix a bug.
\nThe arguments, either an array or the arguments
object\nfrom the current method, for example: this.callParent(arguments)
Returns the result of calling the parent method
\nThis method is used by an override to call the superclass method but bypass any\noverridden method. This is often done to \"patch\" a method that contains a bug\nbut for whatever reason cannot be fixed directly.
\n\nConsider:
\n\n Ext.define('Ext.some.Class', {\n method: function () {\n console.log('Good');\n }\n });\n\n Ext.define('Ext.some.DerivedClass', {\n method: function () {\n console.log('Bad');\n\n // ... logic but with a bug ...\n\n this.callParent();\n }\n });\n
\n\nTo patch the bug in DerivedClass.method
, the typical solution is to create an\noverride:
Ext.define('App.paches.DerivedClass', {\n override: 'Ext.some.DerivedClass',\n\n method: function () {\n console.log('Fixed');\n\n // ... logic but with bug fixed ...\n\n this.callSuper();\n }\n });\n
\n\nThe patch method cannot use callParent
to call the superclass method
since\nthat would call the overridden method containing the bug. In other words, the\nabove patch would only produce \"Fixed\" then \"Good\" in the console log, whereas,\nusing callParent
would produce \"Fixed\" then \"Bad\" then \"Good\".
The arguments, either an array or the arguments
object\nfrom the current method, for example: this.callSuper(arguments)
Returns the result of calling the superclass method
\nReset all class states and starts a new empty array for encoding data.\nThe method generates a new array for encoding, so it's safe to keep a\nreference to the old one.
\nEncodes a U29 int, returning a byte array with the encoded number.
\nInitialize configuration for this class. a typical example:
\n\nExt.define('My.awesome.Class', {\n // The default config\n config: {\n name: 'Awesome',\n isAwesome: true\n },\n\n constructor: function(config) {\n this.initConfig(config);\n }\n});\n\nvar awesome = new My.awesome.Class({\n name: 'Super Awesome'\n});\n\nalert(awesome.getName()); // 'Super Awesome'\n
\nthis
\nGet the reference to the class from which this object was instantiated. Note that unlike self,\nthis.statics()
is scope-independent and it always returns the class from which it was called, regardless of what\nthis
points to during run-time
Ext.define('My.Cat', {\n statics: {\n totalCreated: 0,\n speciesName: 'Cat' // My.Cat.speciesName = 'Cat'\n },\n\n constructor: function() {\n var statics = this.statics();\n\n alert(statics.speciesName); // always equals to 'Cat' no matter what 'this' refers to\n // equivalent to: My.Cat.speciesName\n\n alert(this.self.speciesName); // dependent on 'this'\n\n statics.totalCreated++;\n },\n\n clone: function() {\n var cloned = new this.self; // dependent on 'this'\n\n cloned.groupName = this.statics().speciesName; // equivalent to: My.Cat.speciesName\n\n return cloned;\n }\n});\n\n\nExt.define('My.SnowLeopard', {\n extend: 'My.Cat',\n\n statics: {\n speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard'\n },\n\n constructor: function() {\n this.callParent();\n }\n});\n\nvar cat = new My.Cat(); // alerts 'Cat', then alerts 'Cat'\n\nvar snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard'\n\nvar clone = snowLeopard.clone();\nalert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard'\nalert(clone.groupName); // alerts 'Cat'\n\nalert(My.Cat.totalCreated); // alerts 3\n
\nWrites the appropriate AMF0 boolean value to the byte array.
\nThe value to write
\nWrite an object to the byte array in AMF0 format.\nSince we don't have the class information form Flex, the object\nis written as an anonymous object.
\nthe object to serialize.
\nWrites the AMF0 null value to the byte array.
\nWrites a numberic value to the byte array in AMF0 format
\nA native numeric value, Number instance or one of Infinity, -Infinity or NaN
\nWrites a short UTF8 string preceded with a 16-bit length.
\nthe string to write
\nWrites a strict-array in AMF0 format. Unordered parts are ignored (e.g.\na[\"hello\"] will not be encoded). This function is included for\ncompleteness and will never be called by writeObject.
\nthe array to serialize.
\nWrites the AMF0 undefined value to the byte array.
\nWrites an XMLDocument in AMF0 format.
\nXML document (type Document typically) to write
\nWrites an array in AMF3 format. Only the ordered part of the array use handled.\nUnordered parts are ignored (e.g. a[\"hello\"] will not be encoded).
\nthe array to serialize.
\nWrites the appropriate AMF3 boolean value to the byte array.
\nThe value to write
\nWrite a byte array in AMF3 format. This function is never called directly\nby writeObject since there's no way to distinguish a regular array from a\nbyte array.
\nthe object to serialize.
\nWrite an object to the byte array in AMF3 format.\nSince we don't have the class information form Flex, the object\nis written as an anonymous object.
\nthe object to serialize.
\nWrites the AMF3 null value to the byte array.
\nWrites a numberic value to the byte array in AMF3 format
\nA native numeric value, Number instance or one of Infinity, -Infinity or NaN
\nWrites the AMF3 undefined value to the byte array.
\nWrites an XML object (ActionScript 3 new XML object) in AMF3 format.
\nXML document (type Document typically) to write
\nWrites an Legacy XMLDocument (ActionScript Legacy XML object) in AMF3\nformat. Must be called explicitly.\nThe writeObject method will call writeXml and not writeXmlDocument.
\nXML document (type Document typically) to write
\nWrite an AMF header to the byte array. AMF headers are always encoded in AMF0.
\nWrites an AMF packet to the byte array
\nthe headers to serialize. Each item in the array
\n\n should be an object with three fields:\n name, mustUnderstand, value\n
\n\n@param {Array} messages the messages to serialize. Each item in the array
\n\n should be an object with three fields:\n targetUri, responseUri, body\n
\nWrite the appropriate data items to the byte array. Supported types:\n- undefined\n- null\n- boolean\n- integer (if AMF3 - limited by 29-bit int, otherwise passed as double)\n- double\n- UTF-8 string\n- XML Document (identified by being instaneof Document. Can be generated with: new DOMParser()).parseFromString(xml, \"text/xml\");
\nA primitive or object to write to the stream
\nAdd methods / properties to the prototype of this class.
\n\nExt.define('My.awesome.Cat', {\n constructor: function() {\n ...\n }\n});\n\n My.awesome.Cat.addMembers({\n meow: function() {\n alert('Meowww...');\n }\n });\n\n var kitty = new My.awesome.Cat;\n kitty.meow();\n
\nAdd / override static properties of this class.
\n\nExt.define('My.cool.Class', {\n ...\n});\n\nMy.cool.Class.addStatics({\n someProperty: 'someValue', // My.cool.Class.someProperty = 'someValue'\n method1: function() { ... }, // My.cool.Class.method1 = function() { ... };\n method2: function() { ... } // My.cool.Class.method2 = function() { ... };\n});\n
\nthis
\nBorrow another class' members to the prototype of this class.
\n\nExt.define('Bank', {\n money: '$$$',\n printMoney: function() {\n alert('$$$$$$$');\n }\n});\n\nExt.define('Thief', {\n ...\n});\n\nThief.borrow(Bank, ['money', 'printMoney']);\n\nvar steve = new Thief();\n\nalert(steve.money); // alerts '$$$'\nsteve.printMoney(); // alerts '$$$$$$$'\n
\nThe class to borrow members from
\nThe names of the members to borrow
\nthis
\nCreate a new instance of this Class.
\n\nExt.define('My.cool.Class', {\n ...\n});\n\nMy.cool.Class.create({\n someConfig: true\n});\n
\n\nAll parameters are passed to the constructor of the class.
\nthe created instance.
\nCreate aliases for existing prototype methods. Example:
\n\nExt.define('My.cool.Class', {\n method1: function() { ... },\n method2: function() { ... }\n});\n\nvar test = new My.cool.Class();\n\nMy.cool.Class.createAlias({\n method3: 'method1',\n method4: 'method2'\n});\n\ntest.method3(); // test.method1()\n\nMy.cool.Class.createAlias('method5', 'method3');\n\ntest.method5(); // test.method3() -> test.method1()\n
\nThe new method name, or an object to set multiple aliases. See\nflexSetter
\nThe original method name
\nGet the current class' name in string format.
\n\nExt.define('My.cool.Class', {\n constructor: function() {\n alert(this.self.getName()); // alerts 'My.cool.Class'\n }\n});\n\nMy.cool.Class.getName(); // 'My.cool.Class'\n
\nclassName
\nAdds members to class.
\nThis method has been deprecated since 4.1
\nUse addMembers instead.
\n\nOverride members of this class. Overridden methods can be invoked via\ncallParent.
\n\nExt.define('My.Cat', {\n constructor: function() {\n alert(\"I'm a cat!\");\n }\n});\n\nMy.Cat.override({\n constructor: function() {\n alert(\"I'm going to be a cat!\");\n\n this.callParent(arguments);\n\n alert(\"Meeeeoooowwww\");\n }\n});\n\nvar kitty = new My.Cat(); // alerts \"I'm going to be a cat!\"\n // alerts \"I'm a cat!\"\n // alerts \"Meeeeoooowwww\"\n
\n\nAs of 4.1, direct use of this method is deprecated. Use Ext.define\ninstead:
\n\nExt.define('My.CatOverride', {\n override: 'My.Cat',\n constructor: function() {\n alert(\"I'm going to be a cat!\");\n\n this.callParent(arguments);\n\n alert(\"Meeeeoooowwww\");\n }\n});\n
\n\nThe above accomplishes the same result but can be managed by the Ext.Loader\nwhich can properly order the override and its target class and the build process\ncan determine whether the override is needed based on the required state of the\ntarget class (My.Cat).
\nThis method has been deprecated since 4.1.0
\nUse Ext.define instead
\n\nThe properties to add to this class. This should be\nspecified as an object literal containing one or more properties.
\nthis class
\n