La question semble déjà répondue mais l'OP veut accéder à la classe de et objet, tout comme nous le faisons en Java et la réponse sélectionnée n'est pas suffisante (à mon humble avis).
Avec l'explication suivante, nous pouvons obtenir une classe d'un objet (il est en fait appelé prototype en javascript).
var arr = new Array('red', 'green', 'blue');
var arr2 = new Array('white', 'black', 'orange');
Vous pouvez ajouter une propriété comme celle-ci:
Object.defineProperty(arr,'last', {
get: function(){
return this[this.length -1];
}
});
console.log(arr.last) // blue
Mais la .lastpropriété ne sera disponible que pour arrl'objet ' ' qui est instancié à partir du prototype Array. Donc, pour que la .lastpropriété soit disponible pour tous les objets instanciés à partir du prototype Array, nous devons définir la .lastpropriété pour le prototype Array:
Object.defineProperty(Array.prototype,'last', {
get: function(){
return this[this.length -1];
}
});
console.log(arr.last) // blue
console.log(arr2.last) // orange
Le problème ici est que vous devez savoir à quel type d'objet (prototype) les variables ' arr' et ' arr2' appartiennent! En d'autres termes, si vous ne connaissez pas le type de classe (prototype) de l' arrobjet ' ', vous ne pourrez pas leur définir de propriété. Dans l'exemple ci-dessus, nous savons que arr est une instance de l'objet Array, c'est pourquoi nous avons utilisé Array.prototype pour définir une propriété pour Array. Et si nous ne connaissions pas la classe (prototype) du ' arr'?
Object.defineProperty(arr.__proto__,'last2', {
get: function(){
return this[this.length -1];
}
});
console.log(arr.last) // blue
console.log(arr2.last) // orange
Comme vous pouvez le voir, sans savoir que « arr» est un tableau, nous pouvons ajouter une nouvelle propriété en référençant simplement la classe du « arr» en utilisant « arr.__proto__».
Nous avons accédé au prototype du ' arr' sans savoir qu'il s'agit d'une instance d'Array et je pense que c'est ce que OP a demandé.