brainbaking/content/wiki/code/javascript/magic_properties.md

51 lines
1.6 KiB
Markdown
Raw Normal View History

2017-02-26 13:28:18 +01:00
+++
title = "magic_properties"
draft = false
tags = [
"code",
"javascript",
"magic_properties"
]
date = "2013-03-12"
+++
# Javascript Magic properties
:exclamation: Waarschuwing: deze properties zijn normaal gezien **niet toegankelijk** en dienen enkel om uw algemene kennis van Javascript te verbreden. Deze "magic" properties zijn meestal *exposed* in Mozilla Firefox of via de Firebug plugin. Sommigen hiervan worden overgenomen in de nieuwe versie van javascript, [versie *1.8.5*](https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.8.5) die de ECMA Standaard v5 implementeert. Dit is voor de volgende versie van Chrome en FF4.
### magic properties via Firefox
#### Intern prototype object
-> `_ _proto_ _`
**Deprecated**: gebruik `Object.getPrototypeOf` in de plaats. Wordt deel van ECMA5, *reeds geïmplementeerd vanaf FF3.5*.
Wat is hier mogelijk mee? We kunnen zo makkelijker via inheritance een "shadowed" functie aanroepen:
```javascript
function Dier() { }
Dier.prototype.eet = function(extra) {
console.log("omnom " + extra);
}
function Aap() { }
Aap.prototype = new Dier();
Aap.prototype.eet = function() {
Object.getPrototypeOf(this).eet("banaan");
// without getPrototypeOf, you'd have to explicitly call it via Dier.prototype.eet
}
new Aap().eet();
```
Zie
* Mozilla API: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/proto
* http://ejohn.org/blog/objectgetprototypeof/
#### Keys van objecten retourneren
```javascript
Object.keys({1: 1, 2: 2}) ###### [ "1", "2"]
```
Beschikbaar via Firebug, en in Node JS. Wordt deel van ECMA5.
Een andere manier is via de magic property `_ _count_ _`.