Can: Array Plugin

Hallo Leute,

ich weiss es gibt das Array Object, womit man per prototype dahin neue Funktionen einbinden kann.
Aber meine Frage ist, da ich mich heute mit JQuery Plugins befasse, wieso folgendes nicht funktioniert:

  
                var arrayBla = ("Ein", "Array");  
  
		$.fn.arrayHat = function(string){  
			for(var i=0, l=this.length; i<l; i++){  
				if(this[i] === string) { return true; }  
			}  
		  
			return false;  
		}  
  
                arrayBla.arrayHat("Array");  
  

Müsste der Plugin nicht aufgerufen werden? Und sollte sich this nicht auf das Array beziehen? Oder funktionieren diese Plugins nur für DOM Elemente?

Danke im voraus :-)

  1. var arrayBla = ("Ein", "Array");

      $.fn.arrayHat = function(string){  
      	for(var i=0, l=this.length; i<l; i++){  
      		if(this[i] === string) { return true; }  
      	}  
        
      	return false;  
      }  
    

    arrayBla.arrayHat("Array");

    
    >   
    > Müsste der Plugin nicht aufgerufen werden?  
      
    Die Fehlerkonsole ist dein bester Freund.  
    ~~~javascript
      
    var arrayBla =["Ein","Array"];  
    // stuff  
    $.arrayHat.apply( arrayBla, ["Array"] );  
    
    

    "string" ist zwar kein reserviertes in Javascript, aber leicht misszuverstehen und auch kein aussagekräftiger Bezeichner.

    1. Die Fehlerkonsole ist dein bester Freund.

      var arrayBla =["Ein","Array"];
      // stuff
      $.arrayHat.apply( arrayBla, ["Array"] );

        
      Sorry, ich verstehe deinen Beitrag nicht so genau...  
      Machen wir es mal mit verständlichen Namen :-)  
        
      ~~~javascript
        
        var ids = [2,3,4];  
        
       $.fn.hat = function(id){  
         for(var i=0; i<this.length; i++){  
           if(this[i]===id){ return true; }  
         }  
         return false;  
       }  
        
       ids.hat(2);  
        
      
      
      1. var ids = [2,3,4];

        $.fn.hat = function(id){
           for(var i=0; i<this.length; i++){
             if(this[i]===id){ return true; }
           }
           return false;
        }

        ids.hat(2);

          
        "ids" ist immernoch ein Array. Und dein Array kennt die Methode "hat" nicht, die jast du ja dem jQuery-Objekt hinzugefügt. Aber mit call und apply kannst du Methoden in fremden Kontexten aufrufen.  
          
        
        
  2. Hallo Can,

    warum unbedingt jquery, Javascript kann das auch, mit Array.prototype

    Kennst du schon typeof?

    Gruß, Jürgen

    1. Hallo,

      warum unbedingt jquery, Javascript kann das auch, mit Array.prototype

      ^alleine

      Kennst du schon typeof?

      vergiss den Satz, ich habe mich vom Namen ´"string" täuschen lassen.

      Gruß, Jürgen

      1. Hallo,

        warum unbedingt jquery, Javascript kann das auch, mit Array.prototype

        Klar, mit Array.prototype geht es, und ist auch der richtige Ansatz, aber mir geht es nur um interessehalber. :-)