如何访问javascript变量的功能

时间:2016-06-01 13:47:04

标签: javascript html

我有一个包含以下代码的javascript文件:

(function () {

    var cookieconsent = {

        dismiss: function (evt) {
          evt.preventDefault && evt.preventDefault();
          evt.returnValue = false;
          this.setDismissedCookie();
          this.container.removeChild(this.element);
        },

        setDismissedCookie: function () {
          Util.setCookie(DISMISSED_COOKIE, 'yes', this.options.expiryDays, this.options.domain, this.options.path);
        }

    };

})();

如何访问该功能" dismiss"来自,比方说,浏览器的控制台或页面上的href链接?

这是文件的来源:Cookie Consent - GitHub

谢谢!

4 个答案:

答案 0 :(得分:2)

您不能,因为该变量是在执行此脚本时调用的匿名函数的范围中定义的。但是,您可以更改代码,使变量可以访问:

(function (global) {

    global.cookieconsent = {

        ...

    };

})(this);

答案 1 :(得分:2)

变量只能在其范围内访问。所以,如果你这样做

function helloWorld(){
  var test = "Test";
}

test仅在helloWorld内可用。

当你这样做时



var test = "test";

function notify(){
  console.log(test);
}




test将被访问,因为它在更高的范围内定义。

当您在JS文件中执行相同操作时,由于此变量未包含在函数内,因此它将成为全局范围(window)的一部分,因此它们随处可用。

如果您希望将变量设为全局变量,则可以使用window.variableName并访问它。

注意:污染全球范围是一种不好的做法。请参阅Why are global variables considered bad practice?

另外,如果您希望在HTML元素上绑定一个函数,请尝试

document.getElementById("elementId").addEventListener("click", cookieconsent.dismiss)

关于在控制台上访问它,尝试在控制台中记录它,然后您可以使用chrome调试器将记录的对象保存在全局对象中并进行测试。

答案 2 :(得分:1)

只需删除var关键字,然后从全局上下文中将该函数作为cookieconsent.dismiss访问。请参阅@Pointy对您问题的评论。

答案 3 :(得分:1)

我想你可以尝试一些不同的方法:

(function () {

    window.cookieconsent = {

        dismiss: function (evt) {
          evt.preventDefault && evt.preventDefault();
          evt.returnValue = false;
          this.setDismissedCookie();
          this.container.removeChild(this.element);
        },

        setDismissedCookie: function () {
          Util.setCookie(DISMISSED_COOKIE, 'yes', this.options.expiryDays, this.options.domain, this.options.path);
        }

    };

})();

cookieconsent.dismiss();