Definire proprietati cu prototype in javascript

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
sterica
Mesaje: 285

Definire proprietati cu prototype in javascript

Dupa multe cautari am ajuns la urmatoarea concluzie:
Acesta este un obiect de tip string:

Cod: Selectaţi tot

var txt = new String("text pentru test");
ce are urmatoarele proprietati:
constructor - Returnează funcţia care a creat prototipul obiectului String
length - Returnează lungimea şirului
prototype - Permite adăugarea de proprietăţi şi metode unui obiect

si metode:
charAt() - Returnează caracterul cu indexul specificat
charCodeAt() - Returnează codul Unicode al caracterului cu indexul specificat
etc

daca doresc sa afisez lungimea caracterului folosesc o proprietate ce apartine obiectului de tip string

Cod: Selectaţi tot

document.write(txt.length);
Marplo, pentru a adauga noi proprietati unui obiect de tip string ai facut ceva asemanator:

Cod: Selectaţi tot

var txt = new String("text pentru test");
txt.proprietateNoua = "text din proprietate noua";
document.write(txt.proprietateNoua);
Obiectele definite in JS, cele interne, pot primi si alte proprietati in afara de cele definite?
Ce nu inteleg, de ce nu se foloseste prototype, daca tot este o proprietate a obiectului string si foloseste la adaugarea unei proprietati?

Cod: Selectaţi tot

var txt = new String("text pentru test");
txt.prototype.proprietateNoua = "text din proprietate noua";
document.write(txt.proprietateNoua);
Multumesc!

MarPlo Mesaje: 4343
Salut
prototype nu este o proprietate a obiectului creat cu instructiunea "new", ci apartine direct clasei generale, si se poate aplica doar direct la ea.
Cu prototype se adauga sau se modifica proprietati /metode la clasa generala, care apoi vor fi valabile la toate obiectele acelei tip de clase.
Exemplu:

Cod: Selectaţi tot

var txt = new String("text pentru test");
alert(txt.doubleLength());  //undefined

//create doubleLength() method to String class
String.prototype.doubleLength = function(){return this.length*2;}

//doubleLength() is now available to all strings
alert(txt.doubleLength());  //32

var str ='abc';
alert(str.doubleLength());  //6
- De aceea e indicat a se folosi cu precautie "prototype", findca afecteaza proprietatile interne /generale ale obiectelor.

Subiecte similare