Toon posts:

[JS] Echte klassen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik vraag me af of er in javascript ooit nog eens 'echte' klassen komen? Dus dat je op de onderstaande manier een klasse kunt schrijven:

JavaScript:
1
2
3
4
5
6
7
8
9
class MyClass
{
    var EinVar = '';

    function SetEinVar(sMsg)
    {
        this.EinVar = sMsg;
    }
}

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

Dan moet de hele taal omgegooid gaan worden, maar ik geloof dat er in ECMAScript 3.0 (is de volgende versie geloof ik) Leuke dingen zitten als getters, setters en classes. maar voordat je dat kan gaan gebruiken zal het nog wel ff duren :P

Ik neem aan dat je bekent bent met de functions / prototypes methode trouwens?

[ Voor 15% gewijzigd door SchizoDuckie op 15-11-2004 10:55 ]

Stop uploading passwords to Github!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:00

crisp

Devver

Pixelated

javascript is een prototyping language; wat jij wilt zal je dus zo moeten doen:

JavaScript:
1
2
3
4
5
6
7
8
9
10
function MyClass() {
  this.EinVar = null;
}
MyClass.prototype.SetEinVar = function(sMsg) {
  this.EinVar = sMsg;
}

var foo = new MyClass();
foo.SetEinVar('bar');
alert(foo.EinVar);


Ik heb het idee dat veel mensen toch denken dat javascript een afgeleide is van java. Dat is dus niet zo! Behalve de naam en de c-like syntax heeft javascript niets met java gemeen. Java is uitgevonden door Sun, javascript (oorspronkelijk livescript) door Netscape.

[ Voor 32% gewijzigd door crisp op 15-11-2004 10:57 ]

Intentionally left blank


Verwijderd

Topicstarter
Met bovenstaande technieken ben ik bekend. Tevens leuk om te lezen dat de opvolger van JS wel 'echte' klassen gaat ondersteunen (en dan mogen ze van mij d'r gelijk een print_r() bijgooien ;)).

[ Voor 6% gewijzigd door Verwijderd op 15-11-2004 11:03 ]


Verwijderd

In principe is alleen de aanroep anders, voor de rest heb je in Javascript wel alle voordelen van classes :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:00

crisp

Devver

Pixelated

print_r in javascript:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function print_r(ar, ind) {

  if (typeof ind == 'undefined') ind = '';
  var s = 'Array\n' + ind + '(\n';
  for (var i in ar) {
    if (typeof ar[i] == 'function' || typeof ar[i] == 'undefined') continue;
    s += ind + '\t[' + i + '] => ' + (typeof ar[i] == 'object' ? print_r(ar[i], ind+'\t') : ar[i]) + '\n';
  }
  return s + ind + ')';

}


;)

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op maandag 15 november 2004 @ 11:07:
print_r in javascript:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function print_r(ar, ind) {

  if (typeof ind == 'undefined') ind = '';
  var s = 'Array\n' + ind + '(\n';
  for (var i in ar) {
    if (typeof ar[i] == 'function' || typeof ar[i] == 'undefined') continue;
    s += ind + '\t[' + i + '] => ' + (typeof ar[i] == 'object' ? print_r(ar[i], ind+'\t') : ar[i]) + '\n';
  }
  return s + ind + ')';

}


;)
Ik heb deze functie al een keer van je gehad. Ik zou het gewoon handig vinden als een dergelijke functie binnen JS geinplementeerd zou worden. Thanks anyway! ;)

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Verwijderd schreef op maandag 15 november 2004 @ 10:49:
Ik vraag me af of er in javascript ooit nog eens 'echte' klassen komen?
Ja, ze zijn er mee bezig en de working groep heet ECMA TC39. Meer info:

http://www.ecma-international.org/memento/TC39.htm
http://www.mozilla.org/js/language/es4/index.html

Tis alleen wachten op browsers die het gaan implementeren, je kan wel nu alvast oefenen met Actionscript 2.0. :)

"You're only as good, as what you did last week."

Pagina: 1