繁体   English   中英

创建一个新的变量类型,该变量类型扩展了一个对象,该对象在Javascript中将字符串转换为float

[英]Create a new variable type that extends an object that converts string into float in Javascript

在我的应用程序中,我编写了许多公式,调试这些公式非常棘手,因为我要从混合的字符串和数字格式解析数据(因此我必须分别解析每个变量)。

像这样:

function num(n) { return parseFloat(n) || 0; }

var result = (num(width) * num(height)) + num(volume)

我当时认为,如果可以执行以下操作,它会更好看:

(width.n() * height.n()) + volumn.n()

因此,我试图了解有关对象和类的更多信息,并创建一个允许n()方法的新对象类型。

这是我尝试的:

class NumObject extends Object {
  constructor() {
    this.n = function() {
      return num(this);
    }
  }
}

但是我在控制台中收到此错误消息:

Error: |this| used uninitialized in NumObject class constructor

我是新来使用这样的对象和类的,所以我不确定这样做的正确或最佳方法。

如果扩展另一个类,则必须首先在构造函数中调用super()

class NumObject extends Object {
  constructor() {
    super();
    this.n = function() {
      return num(this);
    }
  }
}

无论哪种方式,都不需要扩展Object或将您的方法放在构造函数中。 做就是了:

class NumObject {
  n() {
   // your code here
  }
}

我认为prototyping就是您想要的。

Object.defineProperty( NumObject.prototype, 'n', {
  value: function(){
    // your logic
  },
  enumerable: true,
  configurable: true,
  writable: true
});

还没有测试过,但这应该可以带您正确的方向

如果您真的想使用继承,请将代码更改为:

class NumObject extends Object {
  n () {
    //...
  }
}

请注意,整个constructor(){super()}都是可选的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM