Undefined recursive function including array

by adutu

JavaScript

Object.defineProperty( Object.prototype, "has", { value: function( needle ) {
    var obj = this;
    var needles = needle.split( "." );
    var needles_full=[];
    var needles_square;
    for( var i = 0; i<needles.length; i++ ) {
        needles_square = needles[i].split( "[" );
        if(needles_square.length>1){
            for( var j = 0; j<needles_square.length; j++ ) {
                if(needles_square[j].length){
                    needles_full.push(needles_square[j]);
                }
            }
        }else{
            needles_full.push(needles[i]);
        }
    }
    for( var i = 0; i<needles_full.length; i++ ) {
        var res = needles_full[i].match(/^((\d+)|"(.+)"|'(.+)')\]$/);
        if (res != null) {
            for (var j = 0; j < res.length; j++) {
                if (res[j] != undefined) {
                    needles_full[i] = res[j];
                }
            }
        }

        if( typeof obj[needles_full[i]]=='undefined') {
            return false;
        }
        obj = obj[needles_full[i]];
    }
    return true;
}});

var obj = { something : { deep: { under: "ground" } } };

if( obj.has( "something.['deep']['under']" ) ) {
    alert( "ground" );
} else {
    alert( "NOT FOUND!" );
}