JavaScript: quando prototype è undefined

JavaScript: quando prototype è undefined

Come sviluppatori JavaScript conoscerete senz'altro l'oggetto/proprietà prototype. Intorno a questo oggetto ci sono stati nel corso degli anni una serie di fraintendimenti che hanno reso difficile l'adozione di uno stile di programmazione completamente orientato agli oggetti. Un falso mito su questo oggetto deriva dalla terminologia usata per descriverlo. Si dice infatti che questo oggetto sia "disponibile" su tutti gli oggetti. Ciò è vero solo se con questo termine viene inteso come accessibile, non come già definito. Vediamo perchè.

Ecco una serie di test su quattro tipi di oggetti JavaScript:


var A = {};
var proto1 = A.prototype;

alert(proto1);  // undefined

var B = function() {};
var proto2 = B.prototype;

alert(proto2);  // [object Object]

var C = new function() {};
var proto3 = C.prototype;

alert(proto3); // undefined

var D = new Object();
var proto4 = D.prototype;

alert(proto4);  // undefined

Come si può notare, prototype risulta già definito come oggetto solo nel caso delle funzioni, mentre in tutti gli altri casi è undefined. Bisogna sempre tener presente questo aspetto quando lo si usa.

Torna su