Toon posts:

[JS / Prototype] appendChild vervangen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben me aan het inlezen op prototyping, en probeer een functie te schrijven die verwijst naar appendChild, zodat ik m'n code kort kan houden:

JavaScript:
1
2
3
4
5
6
7
8
var mynode = document.createTextNode('blaat!');

document.body.appendChild(mynode); // normaal
document.body.ac(mynode)           // wil ik werkend krijgen

object.prototype.ac = function(what) {
  return this.appendChild(what);
}

Ik krijg alleen een "object is not defined" error. Wat doe ik verkeerd?

Verwijderd

Je krijgt hier "object is not defined" omdat de "object" uit "object.prototype.ac = function(what) {" verder nergens wordt gedefineerd. Aan de rest van je code te lezen probeer je een functie ac via prototyping aan document.body te hangen, volgens mij is het niet toegestaan\niet mogelijk te prototypen aan document.body.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Object is met een hoofdletter O, verder dien je de prototyped method natuurlijk te definieren alvorens je 'm referenced.

Note overigens dat dit niet zal werken in IE aangezien DOM objects daar niet native zijn en dus niet overerven van Object.

(en persoonlijk vind ik dit een typisch voorbeeld van bad practice: enkel een method-wrapper maken om de naam korter - en dus onduidelijker - te maken...)

[ Voor 24% gewijzigd door crisp op 21-02-2007 16:35 ]

Intentionally left blank


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 14-11 16:23

Clay

cookie erbij?

Als je dit al wil doen zou ik het aan Node of HTMLElement prototypen (wat echter eigenlijk ook zinloos is mbt IE). Dingen die je aan Object prototypet worden nml bijna overal aangehangen:

JavaScript:
1
2
3
4
5
6
Object.prototype.fiets = 'fiets!';

alert( 'huh'.fiets ) // fiets!
alert( Math.fiets ) // fiets!
alert( (0).fiets ) // fiets!
alert( { }.fiets ) // fiets!


Een hele bak overhead, en mocht je ook ooit nog een for(var in in dinges) willen gebruiken, krijg je daarin ook alles terug wat aan Object is geprototyped.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

for-in zou je eigenlijk enkel ism hasOwnProperty() oid moeten gebruiken

Intentionally left blank