[英]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.