如何在javascript中定义私有构造函数?

音乐

我已经在JS中定义了纯对象,这些对象公开了某些静态方法,这些方法应用于构造它们而不是构造函数。如何在Javascript中为我的班级构造一个私有的构造函数?

var Score = (function () {

  // The private constructor
  var Score = function (score, hasPassed) {
      this.score = score;
      this.hasPassed = hasPassed;
  };

  // The preferred smart constructor
  Score.mkNewScore = function (score) {
      return new Score(score, score >= 33);
  };

  return Score;
})();

更新:解决方案应该仍然允许我测试x instanceof Score否则,@ user2864740的解决方案仅公开静态构造函数。

贝吉

有没有可以让我说的解决方案x instanceof Score

是的。从概念上讲,@ user2864740是正确的,但instanceof要正常工作,我们需要公开(return)函数而不是普通对象。如果该函数与.prototype我们内部的私有构造函数相同,则instanceof运算符将执行预期操作

var Score  = (function () {

  // the module API
  function PublicScore() {
    throw new Error('The constructor is private, please use Score.makeNewScore.');
  }

  // The private constructor
  var Score = function (score, hasPassed) {
      this.score = score;
      this.hasPassed = hasPassed;
  };

  // Now use either
  Score.prototype = PublicScore.prototype; // to make .constructor == PublicScore,
  PublicScore.prototype = Score.prototype; // to leak the hidden constructor
  PublicScore.prototype = Score.prototype = {…} // to inherit .constructor == Object, or
  PublicScore.prototype = Score.prototype = {constructor:null,…} // for total confusion :-)

  // The preferred smart constructor
  PublicScore.mkNewScore = function (score) {
      return new Score(score, score >= 33);
  };

  return PublicScore;
}());

> Score.mkNewScore(50) instanceof Score
true
> new Score
Error (…)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在javascript中定义私有构造函数?

来自分类Dev

如何在单独的类中访问私有构造函数?

来自分类Dev

如何在类的私有部分中为复制构造函数定义原型,以防止类的复制?

来自分类Dev

如何在C ++中使用构造函数(只是构造函数)在类中初始化大型私有数组?

来自分类Dev

如何在TypeScript中模仿私有和公共构造函数重载

来自分类Dev

私有构造函数如何在Java中实现发布安全

来自分类Dev

如何在MVC 4中从控制器访问私有构造函数到模型类

来自分类Dev

构造函数中的私有方法(JavaScript,不好的主意?)

来自分类Dev

在 JavaScript 构造函数中访问私有成员

来自分类Dev

如何在JavaScript中向自定义构造函数添加自定义方法?

来自分类Dev

私有构造函数中的程序错误

来自分类Dev

C ++中的私有构造函数

来自分类Dev

Matlab oop中的私有构造函数

来自分类Dev

如何在运行时使用构造函数初始化类中私有的数组?

来自分类Dev

如何在javascript中重新定义私有方法?

来自分类Dev

如何在JavaScript中定义公共和私有财产

来自分类Dev

如何从JavaScript中的私有函数访问公共函数

来自分类Dev

如何在构造函数中使用公共公用函数访问私有变量

来自分类常见问题

如何为构造函数自定义Visual Studio的私有字段生成快捷方式?

来自分类Dev

如何在具有私有构造函数的类中使用iQueryable?

来自分类Dev

派生类不能访问私有成员(尽管构造函数是在基类中定义的)

来自分类Dev

构造函数中定义的私有变量的 ES5 谜题

来自分类Dev

如何在 kotlin 中定义一个只有一个构造函数的类?

来自分类Dev

如何在ruby中定义私有方法?

来自分类Dev

如何在Alicloud中定义私有区域ID

来自分类Dev

如何在Azure中定义私有子网

来自分类Dev

Javascript重新定义私有函数

来自分类Dev

如何从构造函数作为参数的函数中访问私有类的属性?

来自分类Dev

如何在mainactivity中定义dbhandler构造函数变量?

Related 相关文章

  1. 1

    如何在javascript中定义私有构造函数?

  2. 2

    如何在单独的类中访问私有构造函数?

  3. 3

    如何在类的私有部分中为复制构造函数定义原型,以防止类的复制?

  4. 4

    如何在C ++中使用构造函数(只是构造函数)在类中初始化大型私有数组?

  5. 5

    如何在TypeScript中模仿私有和公共构造函数重载

  6. 6

    私有构造函数如何在Java中实现发布安全

  7. 7

    如何在MVC 4中从控制器访问私有构造函数到模型类

  8. 8

    构造函数中的私有方法(JavaScript,不好的主意?)

  9. 9

    在 JavaScript 构造函数中访问私有成员

  10. 10

    如何在JavaScript中向自定义构造函数添加自定义方法?

  11. 11

    私有构造函数中的程序错误

  12. 12

    C ++中的私有构造函数

  13. 13

    Matlab oop中的私有构造函数

  14. 14

    如何在运行时使用构造函数初始化类中私有的数组?

  15. 15

    如何在javascript中重新定义私有方法?

  16. 16

    如何在JavaScript中定义公共和私有财产

  17. 17

    如何从JavaScript中的私有函数访问公共函数

  18. 18

    如何在构造函数中使用公共公用函数访问私有变量

  19. 19

    如何为构造函数自定义Visual Studio的私有字段生成快捷方式?

  20. 20

    如何在具有私有构造函数的类中使用iQueryable?

  21. 21

    派生类不能访问私有成员(尽管构造函数是在基类中定义的)

  22. 22

    构造函数中定义的私有变量的 ES5 谜题

  23. 23

    如何在 kotlin 中定义一个只有一个构造函数的类?

  24. 24

    如何在ruby中定义私有方法?

  25. 25

    如何在Alicloud中定义私有区域ID

  26. 26

    如何在Azure中定义私有子网

  27. 27

    Javascript重新定义私有函数

  28. 28

    如何从构造函数作为参数的函数中访问私有类的属性?

  29. 29

    如何在mainactivity中定义dbhandler构造函数变量?

热门标签

归档