8
votes

Fermeture JavaScript

Voici un code

var collection = (function (){
                var x = 0;
                return {
                    y : x,
                    get : function(){return x},
                    set : function(n) { x = n}                        
                }
              }());

collection.set(1000);


1 commentaires

Vous voulez dire après avoir appelé "SET (1000)"?


5 Réponses :


4
votes

Vous ne pouvez pas définir la collection Y lorsque vous appelez Collection.set (1000)


0 commentaires

3
votes

parce que y stockera la valeur 0 et pas la lecture de x . Tandis que get () lira la variable x chaque fois que vous l'appelez.


0 commentaires

3
votes

Eh bien l'objet que vous définissez la collection pour ressembler à ceci:

{
  y : 0,
  get : function(){return x},
  set : function(n) { x = n}                        
}


0 commentaires

8
votes

y n'est pas un "pointeur" à x . Lors de la création de la fermeture, vous avez simplement copié la valeur de x à ce moment-là dans y , et chaque fois que vous appelez get () / SET () Vous n'utilisez que sur x (pas de relation avec y )


0 commentaires

0
votes
function person(name,age){

    this.name=name;
    this.age=age;

    //closers
    this.sayHi=function(){

        return this.name+" say Hi"

    }

}

var p=new person("Ramesh",23);

alert(p.sayHi())

0 commentaires