Toon posts:

[js] Met prototype function rechtstreeks string veranderen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe kan ik een methode van een string veranderen die rechtstreeks een string verandert, zonder dat ik zo'n constructie gebruik:
x=x.doe();
Ik wil dus gewoon x.doe() doen:

Dit werkt niet:
code:
1
2
3
4
String.prototype.trest=function(){
this='gedaan';
return this;
}


Met een Array prototype kun je wel indexen (indices 1??) van een array aanpassen met this[2]='gedaan'.
Maar dit kan niet met een string?

Verwijderd

Het kan niet, en het kan ook niet met een array.

Je kunt wel properties en methoden aanroepen, en sommige properties wijzigen, maar niet het object zelf.

  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

Zoiets?:
JavaScript:
1
2
3
4
5
6
7
8
function _String_Test()
{
  return this + " - oke";
}

String.prototype.Test = _String_Test;

alert("Andre".Test());

[ Voor 14% gewijzigd door André op 29-01-2004 19:20 ]


Verwijderd

Topicstarter
Ok, zoiets werkt wel:
code:
1
2
3
4
5
6
7
Array.prototype.doe=function(){
this[this.length]='werkt dit?';
return this;
}
var x=[];
x.doe();x.doe();
alert(x);

Eigenlijk wil ik niet het string object wijzigen, alleen maar de inhoud van de string, maar dat is dus hetzelfde :? :)
Zou een String.textcontent property dan niet handig zijn, die zichzelf bij de staart grijpt?

edit:
Nee Andre, want op die manier is de string "Andre" niet veranderd in "Andre - oke"

[ Voor 13% gewijzigd door Verwijderd op 29-01-2004 19:24 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

In de alert krijg ik wel "Andre - oke"?

Lama, ik zie het al. Het kan dus niet.

[ Voor 45% gewijzigd door André op 29-01-2004 19:28 ]


Verwijderd

Topicstarter
Ja maar de string "Andre" is nog steeds de string "Andre" en niet de string "Andre - oke"
Hmm, dit is wel erg waarheid als een koe-achtig. :)

Eigenlijk moet de functie werken zonder dat er een return waarde wordt teruggestuurd.
Mijn bovenstaande code is dus ook fout; die return instructie had ik beter weg kunnen laten.

edit:
Te laat gereageerd (of te snel met reageren)

[ Voor 15% gewijzigd door Verwijderd op 29-01-2004 19:33 ]

Pagina: 1