15 Kasım 2007 Perşembe

Çeşitli Javascript sınıfları

StringBuffer : Javascript'teki String nesneleri immutable yani daha sonradan büyütülemez özelliktedir ve siz 2 Stringi '+' işareti ile birleştirirseniz sonraki adımda javascript ile ilgili hafızada 2 kullanılmamış 1i yeni 3 tane String nesnesi yer alır eğer bu birleştirmeyi 5 tane String ile yaparsanız 2şer 2şer birleştirilir ve hafiza String çöplüğüne döner.
Bunu engellemek için StringBuffer sınıfını kullanarak String birleştirmesi yapmamız daha iyidir.

function StringBuffer(){
  this.__strings__ = new Array;
}
StringBuffer.prototype.append = function(str){
 this.__strings__.push(str);
 return this;
}
StringBuffer.prototype.toString = function(){
 return this.__strings__.join("");
}



onLoad Loader : Eğer sayfanın onload olayına birden fazla fonksiyon referansı atamak istiyorsanız, yani onload olayı için 1den fazla fonksiyonunuz var ise Loader sınıfı işinize yarayabilir. Yapmanız gereken onload olayı sırasında çağrılacak fonksiyonunuzu Loader.addOnLoad(fonk_adi) fonksiyonunu çağırarak eklemek.


var Loader = {
 loaded: false,
 addOnLoad: function(fn) {
  if (this.loaded) fn();
 else {
   var oldonload = (window.onload) ? window.onload : function () {};
   window.onload = function () { oldonload(); fn(); };
  }
 },
 init: function() {
  this.loaded = true;
 }
};
Loader.addOnLoad(Loader.init);


Vector : Java dili ile çalışanların mutlaka aşina olduğu bir sınıftır ve verileri saklamayı kolaylaştıran bir sınıftır. Alışkanlıktan olsa gerek bene javascriptte eksikliğini hissettim, Array tabanlı basit bir sınıf, tek sorunu prototype kütüphanesine ihtiyaç duyması fakat javascripte alışkın kişiler kolayca kendilerine uyarlayabilirler.



var Vector = Class.create();
Vector.prototype = {
 initialize : function(){
  this.array = new Array;
 },
 add : function(obj){
  this.array[this.array.length] = obj;
 },
 get : function(index){
  return this.array[index];
 },
 removeByIndex : function(index){
   this.array[index] = null;
 },
 size : function(){
  return this.array.length;
 },
 clear : function(){
   this.array = new Array;
 },
 getAsArray : function(){
  return this.array;
 }
}

 

Hiç yorum yok: