簡體   English   中英

JavaScript構造函數訪問自己的私有方法?

[英]Javascript constructor to access own private method?

我的課堂上有一個我不想公開的方法。 我想知道是否可以從構造函數訪問該方法?

例如:

(function () {
    var Config = function() {
        this.data = this.getOptions();
        var options = document.querySelector('.options');
        options.addEventListener('click', this.toggleOption, false);
    };

    Config.prototype = function() {
        var getOptions = function() {
            // public method
        },

        toggleOption = function() {
            // private method
        };

        return {
            getOptions: getOptions
        };
    }();

    var config = new Config();

})();

我很抱歉,是否曾經有人問過,但這可能嗎?

是的,有可能:D

演示: https//jsbin.com/xehiyerasu/

(function () {
  var Config = (function () {
    function toggleOption () {
      console.log('works')
    }

    var Config = function() {
        this.data = this.getOptions();
        var options = document.querySelector('.options');
        options.addEventListener('click', toggleOption.bind(this), false);
    };

    Config.prototype = (function() {
        var getOptions = function() {
            // public method
        };
        return {
            getOptions: getOptions
        };
    })();

    return Config;
  })();

  var config = new Config();

  console.log('Is toggleOption private? ', !config.toggleOption)

})();   

這取決於您為什么要公開此內容。

例如,如果您要公開該變量以進行單元測試,則可以執行以下操作:

if (window.someUnitTestingGlobal) {
  var gprivate = {
    toggleOption: toggleOption
  };
}


return {
    getOptions: getOptions,
    gprivate: gprivate
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM