Donnez le paramètre un nom différent:
function Foo() {
var myPrivateBool = false,
myOtherVar;
this.bar = function(param) {
myPrivateBool = true;
myOtherVar = param;
};
this.baz = function() {
alert(myOtherVar);
};
}
var inst = new Foo;
inst.bar("new value");
inst.baz(); // alerts the value of the variable "myOtherVar"
http://jsfiddle.net/efqVW/
Ou créer une fonction privée pour définir la valeur si vous préférez.
function Foo() {
var myPrivateBool = false,
myOtherVar;
function setMyOtherVar(v) {
myOtherVar = v;
}
this.bar = function(myOtherVar) {
myPrivateBool = true;
setMyOtherVar(myOtherVar);
};
this.baz = function() {
alert(myOtherVar);
};
}
var inst = new Foo;
inst.bar("new value");
inst.baz();
http://jsfiddle.net/efqVW/1/
Je craignais que cela doive l'être = (je suppose que c'est une faille de js – Garrett
@Garrett: Oui, les paramètres formels dans la fonction 'bar' seront plus proches dans la chaîne de portée que les variables du constructeur – user113716
@Garrett : Je suppose que vous pourriez créer une fonction privée pour définir la valeur, mais je ne suis pas sûr que ce soit ce que vous voulez – user113716