Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
new
operatör sözdizimi kullanılarak yapıcılar tarafından oluşturulur ve kendilerine dinamik olarak atanan özelliklere sahiptir. Nesneler şu örnekteki gibi değişmez bir nesne atayarak da oluşturulabilir:
var obj:Object = {a:"foo", b:"bar"}
Açık bir taban sınıfı bildirmeyen tüm sınıflar yerleşik Object sınıfını genişletir.
İlişkilendirilebilir diziler oluşturmak için Object nesnesini kullanabilirsiniz. Temelde ilişkilendirilebilir bir dizi, Object sınıfının bir örneğidir ve her tuş-değer çifti bir özellik ve özelliğin değeriyle temsil edilir. Object veri türü kullanılarak ilişkilendirilebilir bir dizi bildirmenin başka bir nedeni de, ilişkilendirilebilir dizinizi doldurmak (ancak yalnızca bildirdiğiniz zaman) için değişmez bir nesne kullanabilmenizdir. Şu örnek, değişmez bir nesne kullanarak ilişkilendirilebilir bir dizi oluşturur, hem nokta operatörünü hem de dizi erişim operatörünü kullanarak öğelere erişir ve ardından yeni bir özellik oluşturarak yeni bir tuş-değer çifti ekler.
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'ın iki tür mirası vardır: sınıf mirası ve prototip mirası:
- Sınıf mirası - birincil miras mekanizmasıdır ve sabit özelliklerin mirasını destekler. Sabit özellik, sınıf tanımının bir parçası olarak bildirilen bir değişken, sabit veya yöntemdir. Şimdi her sınıf tanımı, sınıf hakkındaki bilgileri saklayan özel bir sınıf nesnesiyle temsil edilir.
- Prototip mirası - önceki ActionScript sürümlerinde bulunan tek miras mekanizmasıdır ve ActionScript 3.0'da alternatif bir miras şekli görevini görür. Her sınıfın ilişkili bir prototip nesnesi vardır ve prototip nesnesinin özellikleri sınıfın tüm örnekleri arasında paylaşılır. Bir sınıf örneği oluşturulduğunda, sınıfın prototip nesnesine başvuru içerir ve bu başvuru, örnek ile örneğin ilişkili sınıf prototip nesnesi arasında bir bağ görevi görür. Çalışma zamanında sınıf örneğinde bir özellik bulunmadığında, sınıf prototip nesnesi olan temsilcide bu özelliğin olup olmadığı kontrol edilir. Prototip nesnesi bu özelliği içermiyorsa, işlem, Flash çalışma zamanı bu özelliği buluncaya kadar, prototip nesnesinin temsilcisinin hiyerarşide art arda daha yüksek seviyeleri kontrol etmesiyle işlem devam eder.
Şu örnekte gösterildiği gibi hem sınıf mirası hem de prototip mirası aynı anda bulunabilir:
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
Sınıflar yerine işlevleri kullanarak özel prototip mirası ağaçları oluşturabilirsiniz. Sınıflar sayesinde prototip mirası ağacı, sınıf mirası ağacını yansıtır. Ancak prototip nesneleri dinamik olduğundan, çalışma zamanında prototip temelli özellikler ekleyip silebilirsiniz.
İlgili API Öğeleri
Özellik | Tanımlayan: | ||
---|---|---|---|
constructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. | Object | ||
prototype : Object [statik]
Bir sınıf veya işlev nesnesinin prototip nesnesine bir başvuru. | Object |
Yöntem | Tanımlayan: | ||
---|---|---|---|
Object()
Bir Object nesnesi oluşturur ve nesnenin constructor özelliğinde nesnenin constructor yöntemine giden bir başvuruyu saklar. | Object | ||
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Belirtilen nesnenin dize olarak temsil edilen halini döndürür. | Object | ||
Belirtilen nesnenin temel değerini döndürür. | Object |
constructor | özellik |
public var constructor:Object
Çalışma Zamanı Sürümleri: | Flash Player 9, Flash Lite 4, Flash Player 9, AIR 1.0 |
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. Bir nesne, bir sınıf örneğiyse, constructor
özelliği o sınıf nesnesinin bir başvurusunu tutar. Yapıcı işleviyle bir nesne oluşturulursa, constructor
özelliği, yapıcı işlevinin bir başvurusunu tutar. Yapıcı işlevini, bir sınıfın constructor yöntemiyle karıştırmayın. Yapıcı işlevi, nesne oluşturmak için kullanılan bir Function nesnesidir ve sınıfları tanımlamada class
anahtar kelimesi kullanılmasına alternatiftir.
Bir sınıfı tanımlamak için class
anahtar kelimesini kullanırsanız, sınıf nesnesinin bir başvurusunu tutan constructor
adında bir özellik sınıfın prototip nesnesine atanır. Sınıfın bir örneği, bu özelliği prototip nesnesinden miras alır. Örneğin, şu kod yeni bir A
sınıfı ve myA
adında bir sınıf örneği oluşturur:
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
İleri düzey kullanıcılar, nesne oluşturmaya yönelik bir şablon olarak kullanılabilen Function nesnesi tanımlamak için class
anahtar kelimesi yerine function
anahtar kelimesini kullanmayı seçebilir. Nesne oluşturmak için bu tür bir işlevi new
operatörüyle birlikte kullanabildiğiniz için, bu işleve yapıcı işlevi denir. Bir yapıcı işlevi oluşturmak için function
anahtar kelimesini kullanırsanız, bunun prototip nesnesine, yapıcı işlevinin bir başvurusunu tutan constructor
adında bir özellik atanır. Daha sonra bir nesne oluşturmak için yapıcı işlevini kullanırsanız, nesne, yapıcı işlevinin prototip nesnesinden constructor
özelliğini miras alır. Örneğin, şu kod yeni bir f
yapıcı işlevi ve myF
adında bir nesne oluşturur:
function f() {} trace(f.prototype.constructor); // function Function() {} trace(f.prototype.constructor == f); // true var myF = new f(); trace(myF.constructor == f); // true
Not: constructor
özelliği yazılabilir, başka bir deyişle, kullanıcı kodu bir atama deyimiyle değerini değiştirebilir. constructor
özelliğinin değerinin değiştirilmesi önerilmez, ancak constructor
özelliğinin değerine bağlı olan bir kod yazarsanız, değerin sıfırlanmamasını sağlamanız gerekir. Yalnızca prototip nesnesi (örneğin, className.prototype.constructor
) üzerinden özelliğe erişildiğinde değer değiştirilebilir.
constructor
özelliğine erişir ve katı modda derleme yaparsanız, constructor özelliği bir çalışma zamanı varlığı olan prototip nesnesine bağlı olduğundan derleme zamanında bir hata alırsınız. Standart mod kullanırsanız veya sınıf açıklaması "dinamik" olursa, kod bir hata üretmeden çalıştırılır.
İlgili API Öğeleri
prototype | özellik |
public static var prototype:Object
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Bir sınıf veya işlev nesnesinin prototip nesnesine bir başvuru. prototype
özelliği otomatik olarak oluşturulur ve oluşturduğunuz herhangi bir sınıf veya işlev nesnesine eklenir. Bu özellik, oluşturduğunuz sınıf veya işleve özel olduğundan statiktir. Örneğin, bir sınıf oluşturursanız, prototype
özelliğinin değeri sınıfın tüm örnekleri tarafından paylaşılır ve yalnızca bir sınıf özelliği olarak erişilebilir. Sınıfınızın örnekleri doğrudan prototype
özelliğine erişemez.
Bir sınıfın prototip nesnesi, bir sınıfın tüm örneklerinde durumu paylaşmaya yönelik bir mekanizma sağlayan özel bir sınıf örneğidir. Çalışma zamanında sınıf örneğinde bir özellik bulunmadığında, sınıf prototip nesnesi olan temsilcide bu özelliğin olup olmadığı kontrol edilir. Prototip nesnesi bu özelliği içermiyorsa, işlem, Flash çalışma zamanı bu özelliği buluncaya kadar, prototip nesnesinin temsilcisinin hiyerarşide art arda daha yüksek seviyeleri kontrol etmesiyle işlem devam eder.
Not: ActionScript 3.0'da, prototip mirası birincil miras mekanizması değildir. Sınıf tanımlarında sabit özelliklerin mirasını yönlendiren sınıf mirası, ActionScript 3.0'daki birincil miras mekanizmasıdır.
Object | () | Yapıcı |
public function Object()
Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Bir Object nesnesi oluşturur ve nesnenin constructor
özelliğinde nesnenin constructor yöntemine giden bir başvuruyu saklar.
hasOwnProperty | () | yöntem |
AS3 function hasOwnProperty(name:String):Boolean
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. Hedef nesne, name
parametresiyle belirtilen dizeyle eşlenen bir özelliğe sahipse, bu yöntem true
, sahip değilse false
döndürür. Şu özellik türleri, bu yöntemin bir sınıf örneği olan nesneler (sınıf nesnelerinin tersi) için true
döndürmesine neden olur:
- Sabit örnek özellikleri—statik olmayan nesne sınıfının tanımladığı değişkenler, sabitler veya yöntemler.
- Miras alınan sabit örnek özellikleri—nesne sınıfının miras aldığı değişkenler, sabitler veya yöntemler.
- Dinamik özellikler—başlatıldıktan sonra nesneye eklenen özellikler (sınıf tanımı dışında). Dinamik özellikler eklemek için, nesneyi tanımlayan sınıfın
dynamic
anahtar kelimesi ile bildirilmesi gerekir.
Şu özellik türleri, bu yöntemin bir sınıf örneği olan nesneler için false
döndürmesine neden olur:
- Statik özellikler—bir nesneyi tanımlayan sınıfta veya nesnenin alt sınıflarından herhangi birinde statik anahtar kelimeyle tanımlanan değişkenler, sabitler ya da yöntemler;
- Prototip özellikler—nesnenin prototip zincirinin bir parçası olan prototip nesnesinde tanımlanmış özellikler. ActionScript 3.0'da prototip zinciri, sınıf mirası için kullanılmaz ancak alternatif bir miras şekli olarak var olur. Örneğin, Array sınıfı örneği, Array sınıfının prototip zincirinin bir parçası olan
Object.prototype
öğesinde bulunduğundan,valueOf()
yöntemine erişebilir. Array örneğindevalueOf()
öğesini kullanabilseniz de, bu örneğinhasOwnProperty("valueOf")
dönüş değerifalse
olur.
ActionScript 3.0'ın, sınıf tanımlarının doğrudan temsili olan sınıf nesneleri vardır. hasOwnProperty()
yöntemi sınıf nesnelerinde çağrıldığında, ancak bir özellik o sınıf nesnesinde tanımlanmış statik bir özellikse, true
döndürür. Örneğin, CustomArray adında bir Array alt sınıfı oluşturur ve foo
adında CustomArray içinde statik bir özellik tanımlarsanız, CustomArray.hasOwnProperty("foo")
çağrısı true
döndürür. Ancak Array sınıfında tanımlı DESCENDING
statik özelliği için CustomArray.hasOwnProperty("DESCENDING")
çağrısı false
döndürür.
Not: Object sınıfı yöntemleri, Object prototipinde dinamik olarak oluşturulur. Bir Object alt sınıfında bu yöntemi yeniden tanımlamak için override
anahtar kelimesini kullanmayın. Örneğin, bir Object alt sınıfı, taban sınıfının geçersiz kılmasını kullanmak yerine function hasOwnProperty():Boolean
öğesini uygular.
Parametreler
name:String — Nesnenin özelliği.
|
Boolean — Hedef nesnenin name parametresiyle belirtilen özelliği varsa bu değer true , yoksa bu değer false olur.
|
isPrototypeOf | () | yöntem |
AS3 function isPrototypeOf(theClass:Object):Boolean
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. Nesne, theClass
parametresinin belirttiği nesnenin prototip zincirindeyse, bu yöntem true
döndürür. Hedef nesne, theClass
nesnesinin prototip zincirinde yoksa ve theClass
parametresi de bir nesne değilse, bu yöntem false
döndürür.
Not: Object sınıfı yöntemleri, Object prototipinde dinamik olarak oluşturulur. Bir Object alt sınıfında bu yöntemi yeniden tanımlamak için override
anahtar kelimesini kullanmayın. Örneğin, bir Object alt sınıfı, taban sınıfının geçersiz kılmasını kullanmak yerine function isPrototypeOf():Boolean
öğesini uygular.
Parametreler
theClass:Object — Belirtilen nesnenin başvurabileceği sınıf.
|
Boolean — Nesne, theClass parametresinin belirttiği nesnenin prototip zincirindeyse, bu değer true , değilse false olur.
|
propertyIsEnumerable | () | yöntem |
AS3 function propertyIsEnumerable(name:String):Boolean
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. true
ise bu durumda özellik vardır ve for..in
döngüsünde numaralandırılmış olabilir. Bu yöntem hedef nesnenin prototip zincirini kontrol etmediğinden, bu özellik hedef nesnede var olmalıdır.
Oluşturduğunuz özellikler numaralandırılabilir ancak yerleşik özellikler genellikle numaralandırılamaz.
Not: Object sınıfı yöntemleri, Object prototipinde dinamik olarak oluşturulur. Bir Object alt sınıfında bu yöntemi yeniden tanımlamak için override
anahtar kelimesini kullanmayın. Örneğin, bir Object alt sınıfı, taban sınıfının geçersiz kılmasını kullanmak yerine function propertyIsEnumerable():Boolean
öğesini uygular.
Parametreler
name:String — Nesnenin özelliği.
|
Boolean — name parametresinin belirlediği özellik numaralandırılabilirse, bu değer true , değilse bu değer false olur.
|
setPropertyIsEnumerable | () | yöntem |
public function setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. Bu yöntem hedef nesnenin prototip zincirini kontrol etmediğinden, bu özellik hedef nesnede var olmalıdır.
Parametreler
name:String — Nesnenin özelliği.
| |
isEnum:Boolean (default = true ) — false olarak ayarlanırsa, dinamik özellik for..in döngüsünde gösterilmez ve propertyIsEnumerable() yöntemi false döndürür.
|
İlgili API Öğeleri
toLocaleString | () | yöntem |
public function toLocaleString():String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür.
Bu yöntemin varsayılan uygulaması, yerel ayara özel biçimlendirme gerçekleştirmez ve toString()
ile aynı dizeyi döndürür. Alt sınıflar, gerektiğinde kendi yerel ayarlarına göre uygulamasını sağlamalıdır.
Not: Object sınıfı yöntemleri, Object prototipinde dinamik olarak oluşturulur. Bir Object alt sınıfında bu yöntemi yeniden tanımlamak için override
anahtar kelimesini kullanmayın. Örneğin, Object sınıfının bir alt sınıfı, temel sınıfın geçersiz kılınmasını kullanmak yerine, function toLocaleString():String
öğesini uygular.
String — Bu nesnenin, yerel kurallara göre biçimlendirilmiş dize temsili.
|
İlgili API Öğeleri
toString | () | yöntem |
public function toString():String
Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Belirtilen nesnenin dize olarak temsil edilen halini döndürür.
Not: Object sınıfı yöntemleri, Object prototipinde dinamik olarak oluşturulur. Bir Object alt sınıfında bu yöntemi yeniden tanımlamak için override
anahtar kelimesini kullanmayın. Örneğin, Object sınıfının bir alt sınıfı, temel sınıfın geçersiz kılınmasını kullanmak yerine, function toString():String
uygular.
String — Nesnenin dize olarak temsil edilen hali.
|
valueOf | () | yöntem |
public function valueOf():Object
Çalışma Zamanı Sürümleri: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Belirtilen nesnenin temel değerini döndürür. Bu nesnenin temel bir değeri yoksa, nesnenin kendisi döndürülür.
Not: Object sınıfı yöntemleri, Object prototipinde dinamik olarak oluşturulur. Bir Object alt sınıfında bu yöntemi yeniden tanımlamak için override
anahtar kelimesini kullanmayın. Örneğin, bir Object alt sınıfı, taban sınıfının geçersiz kılmasını kullanmak yerine function valueOf():Object
öğesini uygular.
Object — Bu nesnenin temel değeri veya nesnenin kendisi.
|
İlgili API Öğeleri
ObjectExample
ve Circle
sınıflarını kullanır.
Bu örnek, firstInitObj
ve secondInitObj
değer nesnelerini oluşturur. Circle
özel sınıfı, değer nesnesini kabul eder ve bunun eşlenen dahili özelliklerini değer nesnesinde tanımlanan özelliklere ayarlarken bu özel sınıfın döngüsünde ilerler.
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(); } }
Tue Jun 12 2018, 01:09 PM Z