【发布时间】:2016-08-01 00:36:33
【问题描述】:
我的班级中有一个我不想公开的方法。我想知道是否可以从构造函数中访问该方法?
例如:
(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();
})();
如果之前有人问过这个问题,我很抱歉,但这可能吗?
【问题讨论】:
-
对不起,我的代码有错误,分配给原型的函数应该是自调用的。我正在尝试“Revealing Prototype Pattern”——它对我来说还是新的。
-
我现在明白了。您可以在外部范围内声明
toggleOption,在 IIFE 内,它仍然是“私有的”。但是这种“私有”和“公有”的概念并没有很好地转移到 JS 中,不是经典的 OOP 意义上的。 -
看看this。
-
当整个类已经合二为一时,无需将原型对象的创建包装在 IIFE 中。
标签: javascript class oop methods scope