1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| // This object will be used as the prototype for Nodes when creating a
| // DOM-Level-1-compliant structure.
| var NodePrototype = module.exports = {
| get firstChild() {
| var children = this.children;
| return children && children[0] || null;
| },
| get lastChild() {
| var children = this.children;
| return children && children[children.length - 1] || null;
| },
| get nodeType() {
| return nodeTypes[this.type] || nodeTypes.element;
| }
| };
|
| var domLvl1 = {
| tagName: "name",
| childNodes: "children",
| parentNode: "parent",
| previousSibling: "prev",
| nextSibling: "next",
| nodeValue: "data"
| };
|
| var nodeTypes = {
| element: 1,
| text: 3,
| cdata: 4,
| comment: 8
| };
|
| Object.keys(domLvl1).forEach(function(key) {
| var shorthand = domLvl1[key];
| Object.defineProperty(NodePrototype, key, {
| get: function() {
| return this[shorthand] || null;
| },
| set: function(val) {
| this[shorthand] = val;
| return val;
| }
| });
| });
|
|