// function
function search(target, path) {
var index = path.match(/^[\w]+/);
if (target[index] === undefined) {
return undefined;
}
path = path.replace(/^[\w]+\./, '');
if (path == index) {
return target[index];
}
return search(target[index], path);
}
// prototype
Object.prototype.search = function(path) {
var index = path.match(/^[\w]+/);
if (this[index] === undefined) {
return undefined;
}
path = path.replace(/^[\w]+\./, '');
if (path == index) {
return this[index];
}
return this[index].search(path);
};
var foo = {
bar : {
name : 'foobar',
},
baz : {
name : 'foobaz',
children : [
'baza',
'bazu',
'bazo',
],
category : {
name : 'bazcat',
}
}
}
console.log(foo.search('bar.name')); // 'foobar'
console.log(search(foo, 'bar.names')); //undefined
console.log(foo.search('baz.children')); // array
console.log(foo.search('baz.children')[0]); // 'baza'
console.log(foo.search('baz.children')[9]); // undefined
console.log(search(foo, 'baz.category')); // Object
console.log(foo.search('baz.category.name')); // 'bazcat'