Javascript:关于如何定义新数据类型有哪些指导原则?

 2022-01-07 

Javascript: what are some guidelines on how to define new data types?

假设您正在创建数据类型并公开其行为。

你能举例说明什么时候使用:

  • 一个函数


    我将从我通常定义类的方式开始:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    function CustomDataType(a)
    {
      this.a = a;
      this.b = 2;
    }
    CustomDataType.prototype = {
      doX : function () {}
    };
    var obj = new CustomDataType(1);

    我在构造函数中分配变量,因为 F.prototype = { a : [1,2,3]; } 有问题,数组将在实例之间共享,除非在构造函数中重新初始化属性(所有非原始类型都有问题)。当属性以某种方式依赖于构造函数的参数时,也需要它。我在原型中声明了方法,以便它们在所有实例之间共享,如果您使用继承,则意味着您可以进行超级调用,它还将导致更少的内存使用,因为该方法只需分配一次(尽管这可能不是\\这是个大问题)。

    我从来没有使用过 Object.create,我看不出有什么理由这样做,除非你对一些疯狂的动态黑客感兴趣。

    每当觉得没有必要为对象创建单独的类时,我都会使用对象文字,例如,如果它是方法的参数(因此调用者不必显式实例化某些东西),或者如果它\\' s 一些其他人不应访问的内部值。

    您的工厂本质上与对象字面量相同。我想如果您需要创建一些 jsonesque 结构并设置一些默认值,它会很有用。

    我不明白为什么 new 是危险的或不必要的,他是在什么情况下这么说的?

    但我认为很大程度上取决于口味。保持一致,不要把事情复杂化。