javascript中的拦截原型

javascript中的拦截原型,javascript,prototype,Javascript,Prototype,谁能给我解释一下这个代码吗?它的意思是什么?如何使用它 Function.prototype.createInterceptor = function createInterceptor(fn) { var scope = {}; return function () { if (fn.apply(scope, arguments)) { return this.apply(scope, arguments)

谁能给我解释一下这个代码吗?它的意思是什么?如何使用它

    Function.prototype.createInterceptor = function createInterceptor(fn) {
       var scope = {};
       return function () {
           if (fn.apply(scope, arguments)) {
               return this.apply(scope, arguments);
           }
           else {
               return null;
           }
       };
   };
   var interceptMe = function cube(x) {
           console.info(x);
           return Math.pow(x, 3);
       };
   //
   var cube = interceptMe.createInterceptor(function (x) {
       return typeof x === "number";
   });

代码无法正常工作,因此我进行了以下编辑:

Function.prototype.createInterceptor = function createInterceptor(fn) {
    var scope = {},
        original = this; //<-- add this
    return function () {
        if (fn.apply(scope, arguments)) {
            return original.apply(scope, arguments);
        }
        else {
            return null;
        }
    };
};
var interceptMe = function cube(x) {
        console.info(x);
        return Math.pow(x, 3);
    };
//
var cube = interceptMe.createInterceptor(function (x) {
    return typeof x === "number";
});

代码无法正常工作,因此我进行了以下编辑:

Function.prototype.createInterceptor = function createInterceptor(fn) {
    var scope = {},
        original = this; //<-- add this
    return function () {
        if (fn.apply(scope, arguments)) {
            return original.apply(scope, arguments);
        }
        else {
            return null;
        }
    };
};
var interceptMe = function cube(x) {
        console.info(x);
        return Math.pow(x, 3);
    };
//
var cube = interceptMe.createInterceptor(function (x) {
    return typeof x === "number";
});

哦,ic。。。。如果fn.applyscope,arguments{return original.applyscope,arguments;}那代码呢?你能解释得更具体些吗?谢谢。@user430926如果调用验证器/拦截器函数fn,将返回一个真实结果,然后调用原始函数original并返回其结果。用于传递所有参数。ohh ic。。。。如果fn.applyscope,arguments{return original.applyscope,arguments;}那代码呢?你能解释得更具体些吗?谢谢。@user430926如果调用验证器/拦截器函数fn,将返回一个真实结果,然后调用原始函数original并返回其结果。用于传递所有参数。