SOURCE

var objectTest = {
        arr: [1,3,4,6,7,7,7,45,3]
    }

    function addMethod(object, name, fn) {
        var oldObject = object[name];
        object[name] = function() {
            // fn.length 函数实际需要参数个数
            if (fn.length === arguments.length) return fn.apply(this, arguments)
            if (typeof oldObject === 'function') return oldObject.apply(this, arguments);
        }
    }

    // 给 objectTest 对象添加处理 没有参数 的方法
    addMethod(objectTest, "findTest", find0);

    // 给 objectTest 对象添加处理 一个参数 的方法
    addMethod(objectTest, "findTest", find1);

    // 给 objectTest 对象添加处理 两个参数 的方法
    addMethod(objectTest, "findTest", find2);

    function find0() {
        return this.arr;
    }
    function find1(idx) {
        return this.arr[idx];
    }
    function find2(st, ed) {
        return this.arr.slice(st, ed);
    }

   console.dir(objectTest.findTest) // 图1
   console.log(objectTest.findTest()) // (9) [1, 3, 4, 6, 7, 7, 7, 45, 3]
   console.log(objectTest.findTest(4)) // 7
   console.log(objectTest.findTest(1,4)) // (3) [3, 4, 6]
   console.log(arr.findTest(1,4,7)) // undefined
console 命令行工具 X clear

                    
>
console