50 votes

Comment créez-vous une méthode pour un objet personnalisé en JavaScript?

C'est comme...

var obj = new Object();

obj.function1 = function(){
    //code
}

ou quelque chose comme ça?

88voto

meouw Points 21368

Vous pouvez le voir à partir des réponses que vous avez déjà qu'il y a plus d'une façon.

#1
var o = new Object();
o.method = function(){}

#2
var o = new Object();
o.prototype.method = function(){}

#3
function myObject() {
    this.method = function(){}
}
var o = new myObject();

#4
function myObject() {}
myObject.prototype.method = function(){}
var o = new myObject();

#5
var o = {
    method: function(){}
}

#3 et #4 sont à l'aide d'une fonction constructeur. cela signifie que vous pouvez utiliser pour créer un certain nombre d'objets de la même classe (les classes n'existent pas vraiment en JavaScript)

#4 est différent de #3 parce que tous les objets construits avec #4 partage la même "méthode "" la méthode, car c'est une propriété de leur prototype. Cela permet d'économiser de la mémoire (mais seulement une très petite quantité) et si vous modifiez la méthode du prototype, tous les #4 objets sera immédiatement mis à jour, même si ils ont déjà été instancié.

#1, #2 et #5 sont toutes à peu près équivalent. C'est parce qu'il y aura probablement toujours être l'un d'eux à un moment, donc le fait que #2 a la méthode a été ajoutée le prototype n'a pas vraiment d'importance. (ne pas prendre le clonage en compte)

Il y a toujours plusieurs façons d'ajouter des méthodes à des objets en utilisant des usines avec fermeture ou l'ajout de "statique" propriétés/méthodes à des fonctions ou privé des fonctions imbriquées... :)

53voto

Andreas Grech Points 39188
var newObj = {
    met1 : function () {
        alert('hello');
    }
}

Ensuite, la méthode peut être appelée comme telle :

newObj.met1();

Btw, lors de la déclaration d'un nouvel objet, utilisez l'objet littéral ({}), de ne pas l' new Object() constructeur.

13voto

Christian Nunciato Points 8461

Généralement utiliser le prototype de la propriété:

function YourObject()
{
    //
}

YourObject.prototype.yourMethod= function()
{
   //
}

Une chose que je n'ai vu personne mentionner encore est pourquoi vous pourriez vouloir utiliser l' prototype de la propriété, disons, de l'objet littéral notation: ainsi, la définition de la fonction partagé est sur toutes les instances d'objets créés à partir de votre prototype de fonction, plutôt qu'une fois par instanciation.

2voto

Ranjeet Rana Points 11

Ne vous inquiétez pas bro, voici le code est:

  var myObj=function(){
      var value=null

     this.setValue=function(strValue){

     this.value=strValue;
     };

     this.getValue=function(){
     return this.value;
     };    
};

Vous pouvez appeler cet objet comme ceci:

    var obj= new myObj();
    obj.setValue("Hi!");
    alert(obj.getValue());

1voto

Barry Points 86

Function.prototype.implement = function(member, value) {
   this[member] = value;
   return this;
}

function MyFunction() {
 //...
}

(function($){

 $.implement("a", "blabla")
 .implement("b", function(){ /* some function */ })
 .implement("c" {a:'', b:''});

})(MyFunction);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X