@@ -41,54 +41,61 @@ methods.forEach(function (method) {
41
41
} , ! hasProto )
42
42
} )
43
43
44
- // Augment it with several convenience methods
45
- var extensions = {
46
- remove : function ( index ) {
47
- if ( typeof index === 'function' ) {
48
- var i = this . length ,
49
- removed = [ ]
50
- while ( i -- ) {
51
- if ( index ( this [ i ] ) ) {
52
- removed . push ( this . splice ( i , 1 ) [ 0 ] )
53
- }
54
- }
55
- return removed . reverse ( )
56
- } else {
57
- if ( typeof index !== 'number' ) {
58
- index = this . indexOf ( index )
59
- }
60
- if ( index > - 1 ) {
61
- return this . splice ( index , 1 ) [ 0 ]
44
+ /**
45
+ * Convenience method to remove an element in an Array
46
+ * This will be attached to observed Array instances
47
+ */
48
+ function removeElement ( index ) {
49
+ if ( typeof index === 'function' ) {
50
+ var i = this . length ,
51
+ removed = [ ]
52
+ while ( i -- ) {
53
+ if ( index ( this [ i ] ) ) {
54
+ removed . push ( this . splice ( i , 1 ) [ 0 ] )
62
55
}
63
56
}
64
- } ,
65
- replace : function ( index , data ) {
66
- if ( typeof index === 'function' ) {
67
- var i = this . length ,
68
- replaced = [ ] ,
69
- replacer
70
- while ( i -- ) {
71
- replacer = index ( this [ i ] )
72
- if ( replacer !== undefined ) {
73
- replaced . push ( this . splice ( i , 1 , replacer ) [ 0 ] )
74
- }
75
- }
76
- return replaced . reverse ( )
77
- } else {
78
- if ( typeof index !== 'number' ) {
79
- index = this . indexOf ( index )
80
- }
81
- if ( index > - 1 ) {
82
- return this . splice ( index , 1 , data ) [ 0 ]
83
- }
57
+ return removed . reverse ( )
58
+ } else {
59
+ if ( typeof index !== 'number' ) {
60
+ index = this . indexOf ( index )
61
+ }
62
+ if ( index > - 1 ) {
63
+ return this . splice ( index , 1 ) [ 0 ]
84
64
}
85
65
}
86
66
}
87
67
88
- for ( var method in extensions ) {
89
- def ( ArrayProxy , method , extensions [ method ] , ! hasProto )
68
+ /**
69
+ * Convenience method to replace an element in an Array
70
+ * This will be attached to observed Array instances
71
+ */
72
+ function replaceElement ( index , data ) {
73
+ if ( typeof index === 'function' ) {
74
+ var i = this . length ,
75
+ replaced = [ ] ,
76
+ replacer
77
+ while ( i -- ) {
78
+ replacer = index ( this [ i ] )
79
+ if ( replacer !== undefined ) {
80
+ replaced . push ( this . splice ( i , 1 , replacer ) [ 0 ] )
81
+ }
82
+ }
83
+ return replaced . reverse ( )
84
+ } else {
85
+ if ( typeof index !== 'number' ) {
86
+ index = this . indexOf ( index )
87
+ }
88
+ if ( index > - 1 ) {
89
+ return this . splice ( index , 1 , data ) [ 0 ]
90
+ }
91
+ }
90
92
}
91
93
94
+ // Augment the ArrayProxy with convenience methods
95
+ def ( ArrayProxy , 'remove' , removeElement , ! hasProto )
96
+ def ( ArrayProxy , 'set' , replaceElement , ! hasProto )
97
+ def ( ArrayProxy , 'replace' , replaceElement , ! hasProto )
98
+
92
99
/**
93
100
* Watch an Object, recursive.
94
101
*/
0 commit comments