在阅读了Crockford的JavaScript之后,我对此很感兴趣:好的部分,就是这样做的:
ngOnInit(){
....
}
我可以扩展Number,所以可以使用:
Function.prototype.method=function(name, func){
this.prototype[name] = func;
return this
}
44.4.integer(); // 44
但是尝试获取正整数(自然数)时会抛出错误:
Number.method('integer',function(){
return Math.round(this)
});
有什么想法吗?
答案 0 :(得分:2)
您可以像这样使用它:
console.log((-44.4).natural());
您的问题是44.4.natural()首先被执行,然后您将其打印为负数。
Function.prototype.method=function(name, func){
this.prototype[name] = func;
return this
}
Number.method('natural',function(){
return Math.round(Math.abs(this))
});
console.log((-44.4).natural());
答案 1 :(得分:1)
当您说“错误”时,我认为您的意思是“错误的结果”。
问题是-44.4.natural()
实际上是-(44.4.natural())
。如果您在this
方法中查看natural
,您会发现它是44.4
,而不是-44.4
。
JavaScript没有负数文字格式。它改用否定运算符。优先规则意味着方法调用首先完成,然后取反。
如果要使用-44.4
作为值,请将其放在变量中:
let a = -44.4;
console.log(a.natural()); // 44.4
实时示例:
Function.prototype.method=function(name, func){
this.prototype[name] = func;
return this
}
Number.method('natural',function(){
return Math.abs(this)
});
let a = -44.4;
console.log(a.natural());
或使用()
:
console.log((-44.4).natural()); // 44.4
实时示例:
Function.prototype.method=function(name, func){
this.prototype[name] = func;
return this
}
Number.method('natural',function(){
return Math.abs(this)
});
console.log((-44.4).natural()); // 44.4