Javascript inner functies verschil

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 16-09 14:54
Beste tweakers,

Ik zou graag willen weten wat het verschil is tussen deze twee stukjes code

JavaScript:
1
2
3
4
5
6
functie function()
{
    this.init= function()
    {
    }
}


JavaScript:
1
2
3
4
var functie = 
{
    init : function() {}
}


Het lijkt erop dat het alletwee een soort van classes zijn met methodes maar welke is nu beter om te gebruiken en waarom?

[ Voor 4% gewijzigd door ZeroXT op 14-05-2010 12:56 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je moet je tags afsluiten met [/code]

De eerste variant (even afgezien van de typo) is een constructor waarmee je nieuwe objecten kunt maken, de tweede variant maakt een enkel object genaamd 'functie' (en is dus ook geen functie, de naam is dus misleidend)

[ Voor 22% gewijzigd door .oisyn op 14-05-2010 12:42 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 16-09 14:54
Dus van de twee variant kan je enkel maar een instantie van hebben zoals ik het lees.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, die tweede variant ís een instantie, terwijl de eerste variant een functie is waarmee je een instantie kunt máken.

Je vraag had eigenlijk moeten zijn:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function MyObject() 
{ 
    this.init= function() 
    { 
    } 
}

var a = new MyObject();
var b =
{
    init: function() { }
};

Wat is het verschil tussen a en b? En als je je vraag zo stelt, snap je denk ik ook al wat het verschil is tussen b en MyObject (dus de vraag die jij stelde).

[ Voor 3% gewijzigd door .oisyn op 17-05-2010 14:09 . Reden: typo fixed, thanks ;) ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Afgezien van de typo tussen MijnObject en MyObject ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Overigens, voor de duidelijkheid, het verschil tussen 'a' en 'b' is dat 'a' een instantie is van MyObject ('a instanceof MyObject' geeft dan ook true). Daarentegen is 'b' gewoon een los object (een instantie van Object en niet meer dan dat). Deze twee stukken zijn equivalent:
JavaScript:
1
2
3
4
5
6
7
8
9
var b = 
{ 
    init: function() { } 
};

// en

var b = new Object();
b.init = function() { }

[ Voor 3% gewijzigd door .oisyn op 17-05-2010 14:21 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1