如何调用不在范围内但使用.call(this)的javascript方法

如何调用不在范围内但使用.call(this)的javascript方法,javascript,Javascript,我不确定如何在web浏览器(chrome)控制台中调用这些函数,例如inventoryCheck,但它似乎不可见。有什么方法可以称之为?谢谢 下面是一个javascript文件的片段 (function() { var CC, addToBagCheck, addToCartError, addToCartRequest, addToCartSuccess, availableSizes, displayCorrectShoe, inventoryCheck, isValidJSON,

我不确定如何在web浏览器(chrome)控制台中调用这些函数,例如inventoryCheck,但它似乎不可见。有什么方法可以称之为?谢谢

下面是一个javascript文件的片段

(function() {
    var CC, addToBagCheck, addToCartError, addToCartRequest, addToCartSuccess, availableSizes, displayCorrectShoe, inventoryCheck, isValidJSON, processInventory, selectSize, showBuy, showError, showSoldOut,
        slice = [].slice,
        bind = function(fn, me) {
            return function() {
                return fn.apply(me, arguments);
            };
        };

    inventoryCheck = function() {
        return availableSizes(function(product) {
            return processInventory(product);
        });
    };

    window.captchaResponse = function(response) {
        $('#captcha').addClass('checked');
        $('#flashproductform').append('<input class="captcha-duplicate" type="hidden" name="x-PrdRt" value="' + response + '">');
        return addToBagCheck();
    };

}).call(this);
(函数(){
var CC、addToBagCheck、AddToCarError、addToCartRequest、addToCartSuccess、availableSizes、displayCorrectShoe、inventoryCheck、isValidJSON、processInventory、selectSize、showBuy、showSoldOut、,
slice=[].slice,
绑定=功能(fn,me){
返回函数(){
返回fn.apply(我,参数);
};
};
inventoryCheck=函数(){
返回可用性(功能(产品){
退货处理库存(产品);
});
};
window.captchaResponse=函数(响应){
$(“#验证码”).addClass('checked');
$('#flashproductform')。附加('');
返回addToBagCheck();
};
}).打电话(这个);

您不能<代码>库存检查在闭包中定义。为了全局调用它们(如在控制台中),必须在
窗口
对象中定义它们。由于闭包的上下文似乎是
窗口
(通过使用
this
调用它),因此可以定义
清单检查
如下:

this.inventoryCheck = function(){...}
请注意,在全局对象上定义内容是个坏主意。考虑将所有东西附加到一个单独的全局对象上。这会将全局对象上的足迹减少为单个对象。以下模式更好:

;(function(ns){

  ns.inventoryCheck = function(){...}

  // the rest of the code

})(this.myGlobal = this.myGlobal || {});

// Usage

myGlobal.inventoryCheck(...);

您为什么要手动绑定?谢谢!我假设调用window.captchResponse也是一个禁忌?要添加到这一点,在上面的代码中,captchResponse被添加到window对象中,因此可以通过window.captchResponse()使用。但是上面的建议是一种更好的向窗口添加内容的方法。@hello Your
window.captchaResponse
是一个例外。由于没有任何东西遮挡
窗口
,因此该范围内的
窗口
是全局
窗口
。这意味着您正在全局定义
captchaResponse
(即,它将在控制台上可见)。然而,如前所述,连接到全局是一个坏主意。@user2263572谢谢大家!还有一件事,是否可以调用窗口对象而不是所有单独的绑定,例如:window.CaptCharResponse、window.captchaError等。我没有写这篇文章,我不确定如何调用所有窗口对象,以便在这样做之后更改站点的外观。如果需要查看,这是完整的脚本。谢谢