Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var someObject = {
- 'part1' : {
- 'name': 'Part 1',
- 'size': '20',
- 'qty' : '50'
- },
- 'part2' : {
- 'name': 'Part 2',
- 'size': '15',
- 'qty' : '60'
- },
- 'part3' : [
- {
- 'name': 'Part 3A РУКУ!!!',
- 'size': '10',
- 'qty' : '20'
- }, {
- 'name': 'Part 3B',
- 'size': '5',
- 'qty' : '20'
- }, {
- 'name': 'Part 3C',
- 'size': '7.5',
- 'qty' : '20'
- }
- ]
- };
- //var o = {}, c = window.Configure = {}, seperator = '.';
- var c = function(){
- this.o = {};
- this.seperator = ".";
- this.set = function(obj){
- this.o = obj;
- }
- this.write = function(p, d) {
- p = p.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
- p = p.replace(/^\./, ''); // strip leading dot
- // Split the path to an array and assaign the object
- // to a local variable
- var ps = p.split(this.seperator), co = this.o;
- // Iterate over the paths, skipping the last one
- for(var i = 0; i < ps.length - 1; i++)
- {
- // Grab the next path's value, creating an empty
- // object if it does not exist
- co = (co[ps[i]])? co[ps[i]] : co[ps[i]] = {};
- }
- // Assign the value to the object's last path
- co[ps[ps.length - 1]] = d;
- }
- this.read = function(p) {
- p = p.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
- p = p.replace(/^\./, ''); // strip leading dot
- var ps = p.split(this.seperator), co = this.o;
- /*
- for(var i = 0; i < ps.length; i++)
- {
- co = (co[ps[i]])? co[ps[i]] : co[ps[i]] = {};
- }
- */
- while (ps.length) {
- var n = ps.shift();
- if (n in co) {
- co = co[n];
- } else {
- return;
- }
- }
- return co;
- }
- };
- var n = new c();
- n.set(someObject);
- console.log('whas');
- console.log('n.read part.name', n.read('part1.name'));
- n.write('part3[0].name', "custom var");
- console.log('part1.name now changed');
- n.write('part1.name', "tmp");
- console.log('n.read part.name', n.read('part1.name'));
- console.log('----');
- console.log('before', someObject);
- console.log('someObject.part1.name', someObject.part1.name);
- console.log('someObject.part3[0].name', someObject.part3[0].name);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement