Javascript 原型不是有效的函数
我错过什么了吗?我在同一个文件中有其他原型,它们按预期工作Javascript 原型不是有效的函数,javascript,typescript,prototype,Javascript,Typescript,Prototype,我错过什么了吗?我在同一个文件中有其他原型,它们按预期工作 module StACS export module NumberPrototypes { export function initializer() { // OTHER PROTOTYPES REMOVED FOR SPACE Number.prototype.toPureNumber = function(): number {
module StACS
export module NumberPrototypes {
export function initializer() {
// OTHER PROTOTYPES REMOVED FOR SPACE
Number.prototype.toPureNumber = function(): number {
var self = this;
return parseFloat(self.toString().replace(/[^\d.-]/g, ''));
}
}
}
}
interface Number {
toMoney(decimals?: number, decimalCharacter?: string, thousandsCharacter?: string): string;
toPercentage(decimals?: number, showSymbol?: boolean): string;
toPureNumber(): number;
}
我的可观察到:
productPrice: KnockoutObservable<number>:
productsTabView.productModel().productPrice()
当我尝试这样做时:
productsTabView.productModel().productPrice().toPureNumber()
我得到以下错误:
Uncaught TypeError: productsTabView.productModel(...).productPrice(...).toPureNumber is not a function
at <anonymous>:2:47
at Object.InjectedScript._evaluateOn (<anonymous>:895:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:828:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)
以下工作:
interface Number {
toPureNumber(): number;
}
Number.prototype.toPureNumber = function(): number {
var self = this;
return parseFloat(self.toString().replace(/[^\d.-]/g, ''));
}
var foo = 123.3;
var bar = foo.toPureNumber();
console.log(bar);
修理
调用初始化器 好吧,我终于解决了我的问题。可悲的是,这里的任何人都不会明白,因为你遗漏了一个关键部分。即使KO Observable被设置为一个数字,我也有一个自定义的扩展程序连接到它。此扩展程序执行格式化并返回字符串,而不是数字 这就是我得到这个的原因:
productsTabView.productModel().productPrice()
"$0.00"
我将原型更改为:
String.prototype.toPureNumber = function (): number {
var self = this;
return parseFloat(self.toString().replace(/[^\d.-]/g, ''));
}
现在这一切都如期而动:
productsTabView.productModel().productPrice().toPureNumber()
0
不应该这样吗?Number.prototype.toPureNumber=functionnumber{…}您已经调用了初始化器吗?抱歉,我不得不四处奔波。是,我在页面加载事件中调用初始值设定项。我还有另外两个原型在工作。如果你读过我上面的评论,在初始化器函数中还有另外两个原型在文档加载事件中被调用。另外两个原型正在工作。
productsTabView.productModel().productPrice().toPureNumber()
0