创建一个新的变量类型,该类型扩展一个对象,该对象在Javascript中将字符串转换为浮点值
在我的应用程序中,我编写了很多公式,这使得调试这些公式变得非常棘手,因为我要从混合字符串和数字格式解析数据(因此我必须单独解析每个变量) 大概是这样的:创建一个新的变量类型,该类型扩展一个对象,该对象在Javascript中将字符串转换为浮点值,javascript,angularjs,Javascript,Angularjs,在我的应用程序中,我编写了很多公式,这使得调试这些公式变得非常棘手,因为我要从混合字符串和数字格式解析数据(因此我必须单独解析每个变量) 大概是这样的: function num(n){return parseFloat(n)| | 0;} var结果=(num(宽度)*num(高度))+num(体积) 我在想,如果我能做这样的事情,读起来会更好: (width.n()*height.n())+volumn.n() 因此,我试图学习更多关于对象和类的知识,并创建一种新的对象类型,它允许使用n()
function num(n){return parseFloat(n)| | 0;}
var结果=(num(宽度)*num(高度))+num(体积)
我在想,如果我能做这样的事情,读起来会更好:
(width.n()*height.n())+volumn.n()
因此,我试图学习更多关于对象和类的知识,并创建一种新的对象类型,它允许使用n()
方法
这就是我所尝试的:
class NumObject extends Object {
constructor() {
this.n = function() {
return num(this);
}
}
}
但我在控制台中收到以下错误消息:
错误:|此|在NumObject类构造函数中未初始化使用
我不熟悉使用这样的对象和类,因此我不确定使用这种对象和类的正确方法或最佳方法。如果扩展另一个类,必须首先在构造函数中调用
super()
class NumObject extends Object {
constructor() {
super();
this.n = function() {
return num(this);
}
}
}
无论哪种方式,都不需要扩展对象,也不需要将方法放入构造函数中。只要做:
class NumObject {
n() {
// your code here
}
}
我认为
原型设计
是您需要的
Object.defineProperty( NumObject.prototype, 'n', {
value: function(){
// your logic
},
enumerable: true,
configurable: true,
writable: true
});
还没有测试过,但这应该会指引你正确的方向
如果确实要使用继承,请将代码更改为:
class NumObject extends Object {
n () {
//...
}
}
请注意,整个
constructor(){super()}
都是可选的。您不需要扩展才能继承扩展原型的所有属性吗?是的,但我认为扩展标准对象没有什么意义。通常你想从另一个类继承。哦,好的,这个类的关键字就是inherit吗?