JavaScript 类最佳实践?

标签 javascript class oop

我目前正在研究用 JavaScript 构建类的不同模式。但无论我看到什么样的模式,仍有一些事情我不太确定。

var ItemManager = (function()
{
    var p = function()
    {
        this.items= [];
    };

    p.prototype.addItem = function(item)
    {
        var self = this;    
        self.items.push(item);
    };

    return p;
}());

我创建了简单的类 ItemManager,该类获得了函数 addItem 用于将任何项目添加到集合中。现在我真的不希望代表集合的变量项目是公共(public)的,这个变量应该是私有(private)的,但我没有看到任何可能的方法来使用原型(prototype)方法来访问私有(private)变量。

那么在这种情况下最好的做法是什么?干脆不使用私有(private)变量?

最佳答案

var ItemManager = function() {
    var items = [];

    return {
           addItem : function(item) {   
               items.push(item);
           },
           removeItem : function() {
                return items.pop();
           }
     }
};

var myItemManager = new ItemManager();

items 变量在 ItemManager 函数执行后隐藏,但 addItemremoveItem 仍然共享访问权限到项目。查看Douglas Crockford's article关于 JavaScript 中的私有(private)变量以供进一步调查。

关于JavaScript 类最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19725504/

相关文章:

javascript - Angular-cli : Launch time is too slow

Javascript 这不指向正确的对象

Java继承设计思想 - 求指教

c++ - 带结构的模板

php - 在 PHP 中使用自动加载类时是否存在性能缺陷?

java - 该代码示例如何用 OO/设计模式术语定义?

ios - 如何在 iOS 中初始化该协议(protocol)?

javascript - 基于php变量的mysql查询

javascript - 按不在特定边界内的字符分割字符串

javascript - 使用带有 jquery 的动态表单选择