Pertanyaan sepertinya sudah dijawab tetapi OP ingin mengakses kelas dan objek, seperti yang kita lakukan di Jawa dan jawaban yang dipilih tidak cukup (imho).
Dengan penjelasan berikut, kita bisa mendapatkan kelas objek (sebenarnya disebut prototipe dalam javascript).
var arr = new Array('red', 'green', 'blue');
var arr2 = new Array('white', 'black', 'orange');
Anda dapat menambahkan properti seperti ini:
Object.defineProperty(arr,'last', {
get: function(){
return this[this.length -1];
}
});
console.log(arr.last) // blue
Tetapi .last
properti hanya akan tersedia untuk arr
objek yang dibuat dari prototipe Array. Jadi, agar .last
properti tersedia untuk semua objek yang dibuat dari prototipe Array, kita harus mendefinisikan .last
properti untuk prototipe Array:
Object.defineProperty(Array.prototype,'last', {
get: function(){
return this[this.length -1];
}
});
console.log(arr.last) // blue
console.log(arr2.last) // orange
Masalahnya di sini adalah, Anda harus tahu jenis objek (prototipe) mana variabel ' arr
' dan ' arr2
' milik! Dengan kata lain, jika Anda tidak tahu tipe kelas (prototipe) dari objek ' arr
', maka Anda tidak akan dapat mendefinisikan properti untuk mereka. Dalam contoh di atas, kita tahu arr adalah turunan dari objek Array, itu sebabnya kami menggunakan Array.prototype untuk mendefinisikan properti untuk Array. Tetapi bagaimana jika kita tidak tahu kelas (prototipe) dari ' arr
'?
Object.defineProperty(arr.__proto__,'last2', {
get: function(){
return this[this.length -1];
}
});
console.log(arr.last) // blue
console.log(arr2.last) // orange
Seperti yang Anda lihat, tanpa mengetahui bahwa ' arr
' adalah Array, kita dapat menambahkan properti baru hanya dengan merujuk kelas ' arr
' dengan menggunakan ' arr.__proto__
'.
Kami mengakses prototipe ' arr
' tanpa mengetahui bahwa itu adalah contoh dari Array dan saya pikir itulah yang ditanyakan OP.