Ok, j'essaie de créer un nouvel objet de cette manière :
var src = {a:'a', b:'b', c:'c'};
var out = {};
for(var prop in src){
Object.defineProperty(out, prop,{
get: function(){
return src[prop];
},
set: function(val){
src[prop]=val;
}
})
}
Et obtenir un mauvais résultat :
out = {a:'c', b:'c', c:'c'}
Je connais d'autres façons de créer cet objet, par exemple :
for (var prop in src) {
(function(prop) {
Object.defineProperty(out, prop, {
get: function() {
return src[prop];
},
set: function(val) {
src[prop] = val;
}
})
})(prop)
}
ou :
Object.keys(src).map(function(prop){
Object.defineProperty(out, prop,{
get: function(){
return src[prop];
},
set: function(val){
src[prop]=val;
}
})
})
Mais je ne comprends pas pourquoi, dans la première méthode, un paramètre de type chaîne "prop" sera envoyé à la fonction "defineProperty" par un lien. Aidez-moi à comprendre cela s'il vous plaît. Désolé pour le mauvais anglais.