javascript - 强制原型(prototype)在对象的新实例中具有新的父对象

标签 javascript

我正在寻找一种方法来强制我的所有对象在原型(prototype)中拥有自己的对象实例。原型(prototype)中的这个对象有它自己的私有(private)变量。我不想分享这个对象。我该怎么办?

new function () {
  "use strict";
  function Controls() { };
  Controls.prototype = new Application.Utils.Map(); //instance of this object is shared between all of new Controls objects. I want have new Map object for each new Controls Object. 
  Application.Stored.UI.Controls = new Controls();
  Application.Stored.UI.Controls2 = new Controls();
}();

map 对象如下所示:

function(){
  //private variables with methods
  return {
    func: someFunc,
    ...
  };
};

如何实现这一目标?

最佳答案

如果私有(private)性对您来说比使用原型(prototype)更重要(原型(prototype)方法无法访问私有(private)实例变量)并且您不打算克隆实例(“私有(private)”实例变量只能由实例访问,而不能由类访问,如下所示)在 java )。通过继承,覆盖父级的函数会更加复杂,但有一些方法可以做到这一点:(将所有“类”代码放入构造函数中)How to call parent class' method from a subclass in JavaScript so that parent's local variables would be accessible?

我从不使用“私有(private)”实例变量,但 Bergi 使用模块模式的建议是拥有“私有(private)”函数(每个实例不是唯一的)的好方法,因为函数对于所有实例都可以相同。

将此添加为答案而不是评论,因为该问题显示为有 0 个答案,但我认为 Bergi 在回答评论中的问题方面做得很好。

关于javascript - 强制原型(prototype)在对象的新实例中具有新的父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18418653/

相关文章:

javascript - 触发文件下载的正确方法(在 PHP 中)?

JavaScript 循环

javascript - 使用 AJAX 加载数据

javascript - 无法在VSCode中调试Electron JS应用程序

javascript - 未捕获的类型错误 : Cannot read property 'createMediaElementSource' of null

javascript - 您将如何使用 phantomjs 通过 mandrill 发送邮件?

javascript - jQuery 脚本在 jsFiddle 上运行但不在本地运行

javascript - 误解 `each...in` 用 react 变量渲染

javascript - 从纯文本文件数据库中获取随机行

javascript - Jquery 显示/隐藏为什么它不起作用?