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 .last
propriété ne sera disponible que pour arr
l'objet ' ' qui est instancié à partir du prototype Array. Donc, pour que la .last
propriété soit disponible pour tous les objets instanciés à partir du prototype Array, nous devons définir la .last
proprié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' arr
objet ' ', 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é.